Странное повидение IE при простом скрипте.
Здравствуйте.
Столкнулся с неожиданной проблемой. При исполнении скрипта IE 6 зависает, а все остальные браузеры(FF,Op,Ch,Saf) исполняют. Началось всё с того, что мне было нужно реализовать многоязычность (на трех языках) статей на одной странице. Будучи недалёким в js я написал следующий скрипт, который скрывает и показывает div'ы с контентом. function show(myId) { var english = document.getElementById('en'); var czech = document.getElementById('cz'); var russia = document.getElementById('ru'); condition = myId if (condition == "en") { english.className = 'show'; czech.className = 'hide'; russia.className = 'hide'; } else if(condition == "cz"){ english.className = 'hide'; czech.className = 'show'; russia.className = 'hide'; } else if (condition == "ru") { english.className = 'hide'; czech.className = 'hide'; russia.className = 'show'; } } <a href="javascript:show('en');"><img src="img/en.jpg"/></a> <a href="javascript:show('cz');"><img src="img/cz.jpg"/></a> <a href="javascript:show('ru');"><img src="img/ru.jpg"/></a> <div id="lang-block"> <div id="en" class="show">English</div> <div id="cz" class="hide">Czech</div> <div id="ru" class="hide">Russia</div> </div> CSS .hide { display:none; } .show{ display:inline;} Подобное решение во всех браузерах сработало нормально. Но стоило мне перевести всё на реальную страницу http://www.blowup-project.ru/announce/4/ и IE начал просто зависать. Т.е. нагло и непробудимо зависать при попытке нажатия... Подскажите, как можно решить проблему? Как по-другому реализовать подобный hide\show div? Спасибо! |
if (condition == "en") { } else if(condition == "cz"){ } else (condition == "ru") { } |
ничего не подвисает
IE 8.0.6001.18702 попробуйте взять этот скрипт без ничего, и проверить затем, если не зависает плавно добавлять скрипты 2 Gozar, не пишите глупостей |
Gvozd
В чем собственно вы видите глупость в написанном мной? Глядя на представленный код я не нашел причины почему он должен зависать в ie, поэтому предположил что это из-за того что оканчивается на else if. Если это не играет роли, то надо просто было сказать это не играет роли, а не опускаться до оскорблений. |
Gozar,
вы написали синтаксически неверную конструкцию после else не должно писатся условие else является последним блоком, выполняющимся, при невыполнении остальных таким образом ваше условие, размещенное после него будет либо расценено как блок для выполнения(OPera), либо даст ошибку парсера, по причине отсутствия ;(Mozilla) а блок кода, идущий в фигурных скобках будет выполнен в любом случае, независимо от всех условий тким образом, несмотря на то, что данная конструкция может буть пропущена через парсер(если сделать перенос фигурной скобки на следующую строку) и даже выполнен, она не является верной ТС написал синтаксически и по смыслу верную конструкцию.проблема не в ней поэкспериментируйте сами //condition='ru'//будет только 'ru', как и ожидается вами condition='en'//будет два алерта 'en' и 'ru'.второй-является неверным //condition='qwe'//будет только 'ru'.опять-таки неверно if (condition == "en") { alert('en'); } else if(condition == "cz") { alert('cz'); } else (condition == "ru") { alert('ru'); } так что, товарищ, идите учить матчасть |
Gvozd
Все верно за исключением того, что я не писал этот код, а скопировал из первого поста и просто затер if перед else. Единственное что я забыл сделать это затереть (condition == "ru"). Но все равно спасибо за мат.часть. if (condition == "en") { } else if(condition == "cz"){ } else { } |
Часовой пояс GMT +3, время: 17:35. |