Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как передать элемент в функцию после createElement (https://javascript.ru/forum/misc/1337-kak-peredat-ehlement-v-funkciyu-posle-createelement.html)

Oleg NT 22.06.2008 22:42

Как передать элемент в функцию после createElement
 
В объекте dropdown есть метод:

this.highlightItem = function(item, mode)
{


И в сторонке есть еще один код:

dropdown.LIs[i] = document.createElement('li');
dropdown.LIs[i].onmouseover = 
function() { dropdown.highlightItem(dropdown.LIs[i], 'over'); };
dropdown.ul.appendChild(dropdown.LIs[i]);


Метод .highlightItem сообщает, что аргумент item не определен.

В чем проблема? В том, что после appendChild созданное с помощью document.createElement('li') становится неопределенным? Тогда как решить проблему?


===

на другом форуме посоветовали сначала сделать AppendChild, потом найти элемент через getElementById и назначить функции обработчику событий.

Сделал:

var _el = document.createElement('li');
_el.id = dropdown.title + '_li_' + i;
dropdown.ul.appendChild(_el);
//позже
document.getElementById(dropdown.title + '_li_' + i).onmouseover = 
function() { dropdown.highlightItem(document.getElementById(dropdown.title + '_li_' + i), 'over'); };


Все равно item is null

Как передать объект <li> в метод highlightItem?

Андрей Параничев 23.06.2008 01:41

А если так:
dropdown.LIs[i] = document.createElement('li');
dropdown.LIs[i].onmouseover = function() { dropdown.highlightItem(this, 'over'); };
dropdown.ul.appendChild(dropdown.LIs[i]);

Oleg NT 23.06.2008 01:44

Спасибо за ответ. Проблема была в другом. Но тем не менее, Ваш совет позволил упростить код :) спасибо

Андрей Параничев 23.06.2008 02:11

Oleg NT,
Ну я подозревал, что проблема заключается не в этом коде, потому что в смоделированной вашей задаче у меня всё заработало.


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