Как передать элемент в функцию после 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? |
А если так:
dropdown.LIs[i] = document.createElement('li');
dropdown.LIs[i].onmouseover = function() { dropdown.highlightItem(this, 'over'); };
dropdown.ul.appendChild(dropdown.LIs[i]);
|
Спасибо за ответ. Проблема была в другом. Но тем не менее, Ваш совет позволил упростить код :) спасибо
|
Oleg NT,
Ну я подозревал, что проблема заключается не в этом коде, потому что в смоделированной вашей задаче у меня всё заработало. |
| Часовой пояс GMT +3, время: 05:33. |