Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   "Слетает" onclick. (https://javascript.ru/forum/events/11782-sletaet-onclick.html)

Jurasmi 13.09.2010 14:36

"Слетает" onclick.
 
На страничке при помощи innerHTML() динамически рисуется список HTML-элементов и ,динамически же, каждому из них назначается обработчик события:

var lis = wrap.getElementsByTagName('li');
for(var i=0; i<lis.length; i++){
	lis[i].firstChild.onclick = function(){  //firstChild - это <span> такой (вроде кнопки)
		appendNewListHere();
	};
}

appendNewListHere() - рисует ещё один список внутрь текущего (получается список в списке).

Проблема в том, что когда вставляется внутренний список, то "слетает" обработчик "onclick" для элемента, который только что отрисовал вложенный список.

Мысль (почему это происходит): быть может это связано с тем, что поменялось DOM-дерево.

Почему это происходит на самом деле?

Kolyaj 13.09.2010 14:47

Цитата:

Сообщение от Jurasmi
быть может это связано с тем, что поменялось DOM-дерево.

Т.е. элементы, на которые вы вешали события, уже не существуют?

Jurasmi 13.09.2010 14:54

Цитата:

Сообщение от Kolyaj (Сообщение 70663)
Т.е. элементы, на которые вы вешали события, уже не существуют?

Вы совершенно правы! Я пишу так:
oldHTML.innerHTML = oldHTML.innerHTML + newListHTML;


т.е. вместе с новым (внутренним) списком перерисовывается ещё и кнопка на которой висел "onclick".

Спасибо большое!


Часовой пояс GMT +3, время: 12:55.