Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№121-10-2005 17:47:40

rewue
Участник
 
Группа: Members
Зарегистрирован: 21-10-2005
Сообщений: 20

Javascript+DOM+event

При написании сайта возникла проблемы такого рода:

При загрузке страницы формируется таблица скриптом и вставляется с помощью метода innerHTML в div. Так вот на двух одинаковых версиях браузера (1,0,7) - работает по разному  -на одной машине все нормально работает и табличка формируется, на другой (мне почему то кажется что из-за 2 го сервис пака Винды) - табличка не формируется вообще. Консоль при этом молчит.

Второй глюк - по нажатию на заголовок следующий за ним список должен развернуться или свернуться (в зависимости от флажка). Вопрос каким образом обойти свойство nextSibling. Впрямую адресоваться к списку я немогу - он не всегда отображаеся.

Как обрабатывается событие евент для Файрфокса?

Отсутствует

 

№221-10-2005 18:39:54

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: Javascript+DOM+event

на одной машине все нормально работает и табличка формируется, на другой (мне почему то кажется что из-за 2 го сервис пака Винды) - табличка не формируется вообще. Консоль при этом молчит.

Если браузер и страница одинаковые, то дело в настройках. Может, на 2-м JavaScript просто отключен?

Второй глюк - по нажатию на заголовок следующий за ним список должен развернуться или свернуться (в зависимости от флажка). Вопрос каким образом обойти свойство nextSibling. Впрямую адресоваться к списку я немогу - он не всегда отображаеся.

Эта, примерчик-бы. А то что-то не пойму, в чем проблема.

Как обрабатывается событие евент для Файрфокса?

http://developer.mozilla.org/en/docs/DOM:event

Отсутствует

 

№322-10-2005 00:19:37

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771

Re: Javascript+DOM+event

==> Разработка


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№422-10-2005 10:00:27

rewue
Участник
 
Группа: Members
Зарегистрирован: 21-10-2005
Сообщений: 20

Re: Javascript+DOM+event

2 administrator
Извиняюсь что не туда прицепил...
2 snick
Что касается отображения таблицы - -дело было не в паке винды, просто на одной из машин запускалась неправленая версия... На самом деле не отображается табличка, которая генерится с помощью скрипта ни на одной машине...

Что касается разворачивания. Есть заголовок, который и вызывает эту функцию. По нажатию на него список должен либо свернуться либо развернуться.
вот кусок кода (функция, отвечающая за разворот)

Выделить код

Код:

var flag=true;
function accordeon(el)
{
	if(flag)
	{	
		el.nextSibling.style.display="none";
		flag=false;
	}
	else
	{
		el.nextSibling.style.display="block";
		flag=true;
	}
}

Отсутствует

 

№522-10-2005 11:12:44

profiT
Участник
 
Группа: Members
Откуда: в Караганде
Зарегистрирован: 11-11-2004
Сообщений: 735

Re: Javascript+DOM+event

А зачем нужен флаг? Не проще ли написать:

Выделить код

Код:

function accordeon(el)
{
with (el.nextSibling.style) 
display=(display=="none")?"block":"none";
}

НО!

Очень возможно, что nextSibling'ом у вас не ожидаемый следующий <li>, а узел типа #text (перевод строки, случайный пробели и т.д.). Надо это дело обходить.


Плюсики рисовать здесь: [    ]

Отсутствует

 

№622-10-2005 11:56:10

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: Javascript+DOM+event

rewue
profiT прально говорит, если откроешь DOM Inspector, то увидишь, что следующим элементом будет не список, а #text. Поэтому:

Выделить код

Код:

function accordeon(el) {
  var NextEl=el.nextSibling;
  while (NextEl.tagName!='UL') NextEl=NextEl.nextSibling;
  with (NextEl.style) display=(display=="none")?"block":"none";
}

Отсутствует

 

№723-10-2005 14:39:20

rewue
Участник
 
Группа: Members
Зарегистрирован: 21-10-2005
Сообщений: 20

Re: Javascript+DOM+event

profiT пишет

А зачем нужен флаг? Не проще ли написать:

Выделить код

Код:

function accordeon(el)
{
with (el.nextSibling.style) 
display=(display=="none")?"block":"none";
}

НО!

Очень возможно, что nextSibling'ом у вас не ожидаемый следующий <li>, а узел типа #text (перевод строки, случайный пробели и т.д.). Надо это дело обходить.

Следующий узел точно не текстовый - проверено. Да этих елементов 4 штуки и в одном так и было, но в остальных все нормально...

Отсутствует

 

№823-10-2005 14:47:17

rewue
Участник
 
Группа: Members
Зарегистрирован: 21-10-2005
Сообщений: 20

Re: Javascript+DOM+event

Народ, я вот сходил по ссылке, что мне Snik дал и чего то я там не догоняю. Вроде как обработчик написан правильно а ничего не работает...

Вот что мне нужно
Есть заголовок. При клике по нему должна выполняться функция - какая сейчас не важно. Главное что она должна запуститься...

Отсутствует

 

№923-10-2005 15:02:50

rewue
Участник
 
Группа: Members
Зарегистрирован: 21-10-2005
Сообщений: 20

Re: Javascript+DOM+event

И вдогонку - а нет ли документации одним файликом? ПДФ или СНМ...

Отсутствует

 

№1023-10-2005 16:57:07

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Javascript+DOM+event

rewue пишет

...Есть заголовок. При клике по нему должна выполняться функция...

Выделить код

Код:

...
<h1 onclick="rewueTitleClickFunction();">...

?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1123-10-2005 18:22:49

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: Javascript+DOM+event

rewue

Следующий узел точно не текстовый - проверено. Да этих елементов 4 штуки и в одном так и было, но в остальных все нормально..

Сегодня нет, а завтра - есть. Вдруг строчку перенести захочется? Дополнительную проверку и защиту от дурака в программировании никто не отменял.
Да, если таких заголовков не 1, а много, то рулит такое:

Выделить код

Код:

var tags = document.getElementsByTagName("H1");
for (var i=0; i<tags.length; i++) {
    (tags[i]).onclick=ClickProcessingFunction;
  }
}

Отсутствует

 

№1224-10-2005 12:33:19

rewue
Участник
 
Группа: Members
Зарегистрирован: 21-10-2005
Сообщений: 20

Re: Javascript+DOM+event

2 Snick
Ну про защиту от дурака я не спорю. В конце концов дописать одну строку несложно.:)

Блин все заработало... Просто я обозвал дивижн куда вставляю таблицу зарезервированным именем и из-за этого все скрипты перестали работать под Фоксом...
Только вот теперь новая беда - тот дивижн куда вставляю табличку сгенерированную скриптом "плывет" - т.е. не воспринимает CSS разметку. Такая штука бывает иногда при объявленном ДТД - но их я уже поубирал и в Опере  и В Експлорере все нормально...

Отсутствует

 

№1327-10-2005 17:45:31

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: Javascript+DOM+event

rewue
Честно говоря, если ошибка убирается при устранении DTD в IE, значит код страницы совсем плох. С DTD IE пытается более-менее как надо страницы строить. А без-совсем уж по-своему. В FF без DTD обработка больше похожа не IE-шную с DTD.

Отсутствует

 

№1428-10-2005 15:01:48

rewue
Участник
 
Группа: Members
Зарегистрирован: 21-10-2005
Сообщений: 20

Re: Javascript+DOM+event

это не ошибка... Это глюк, просто при включенном ДТД любом - ни один браузер не хочет для абсолютно опзиционированного дивижна использовать свойство height///

Отсутствует

 

№1530-10-2005 16:26:08

rewue
Участник
 
Группа: Members
Зарегистрирован: 21-10-2005
Сообщений: 20

Re: Javascript+DOM+event

Все проблема решилась и с ДТД... просто надо было правильно написать свойство.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]