Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.09.2009, 02:17
Новичок на форуме
Отправить личное сообщение для JustViktor Посмотреть профиль Найти все сообщения от JustViktor
 
Регистрация: 20.08.2009
Сообщений: 3

Странное повидение 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?
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 18.09.2009, 20:14
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

if (condition == "en") {
    }
else if(condition == "cz"){
} 
else (condition == "ru") {

}
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2009, 21:38
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

ничего не подвисает
IE 8.0.6001.18702
попробуйте взять этот скрипт без ничего, и проверить
затем, если не зависает плавно добавлять скрипты

2 Gozar,
не пишите глупостей
Ответить с цитированием
  #4 (permalink)  
Старый 21.09.2009, 14:31
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Gvozd
В чем собственно вы видите глупость в написанном мной?
Глядя на представленный код я не нашел причины почему он должен зависать в ie, поэтому предположил что это из-за того что оканчивается на else if.

Если это не играет роли, то надо просто было сказать это не играет роли, а не опускаться до оскорблений.
Ответить с цитированием
  #5 (permalink)  
Старый 21.09.2009, 14:47
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

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');
	}

так что, товарищ, идите учить матчасть
Ответить с цитированием
  #6 (permalink)  
Старый 21.09.2009, 15:51
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Gvozd

Все верно за исключением того, что я не писал этот код, а скопировал из первого поста и просто затер if перед else. Единственное что я забыл сделать это затереть (condition == "ru").

Но все равно спасибо за мат.часть.
if (condition == "en") {
    }
else if(condition == "cz"){
} 
else { 
}

Последний раз редактировалось Gozar, 21.09.2009 в 15:54.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск