Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать элемент в функцию после createElement 
V
    Опции темы
OlegNT
  Дата 22.6.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.3.2006
Где: Нижний Тагил

Репутация: нет
Всего: нет



В объекте 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') становится неопределенным? Тогда как решить проблему?
PM MAIL WWW Jabber   Вверх
Itsys
Дата 22.6.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



Сначала создать объект, сделать appendChild, получить на него ссылку (getElementById либо через ирархию dropdown.ul) и затем уже dropdown.LIs[i] присваивать эту ссылку и в конце определять обработчик onmouseover
PM MAIL WWW Skype   Вверх
OlegNT
Дата 22.6.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.3.2006
Где: Нижний Тагил

Репутация: нет
Всего: нет



Код

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
PM MAIL WWW Jabber   Вверх
OlegNT
Дата 22.6.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.3.2006
Где: Нижний Тагил

Репутация: нет
Всего: нет



Проблема оказалась вот в чем:

Код

document.getElementById(dropdown.title + '_li_' + i).onmouseover = function() { dropdown.highlightItem(document.getElementById(dropdown.title + '_li_' + i), 'over'); };

— этот код используется в цикле. Перед циклом объявлено
Код

var i = 0;


Последняя строчка в теле цикла:
Код

++i;


В итоге в функции dropdown.highlightItem передается аргумент «dropdown.title + '_li_' + i», где i — конечное значение, т.е. количество элементов LI (кол-во итераций цикла) плюс один. Ествественно, такого элемента нет, поэтому getElementById() возвращает null.

Как передать в функцию ТЕКУЩЕЕ значение параметра i ?
PM MAIL WWW Jabber   Вверх
Itsys
Дата 23.6.2008, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



при создании элемента
Код

_el.i = i;

потом
Код

document.getElementById(dropdown.title + '_li_' + i).onmouseover = function() { dropdown.highlightItem(document.getElementById(dropdown.title + '_li_' + this.i), 'over'); };

PM MAIL WWW Skype   Вверх
OlegNT
Дата 23.6.2008, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.3.2006
Где: Нижний Тагил

Репутация: нет
Всего: нет



Спасибо огромное!
Вопрос решен.
PM MAIL WWW Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.