Как передать элемент в функцию после 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, время: 07:11. |