Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2016, 14:26
Новичок на форуме
Отправить личное сообщение для regimentor Посмотреть профиль Найти все сообщения от regimentor
 
Регистрация: 01.02.2016
Сообщений: 2

Нужна консультация
Собственно сразу по теме
function menuFunc () {
	// тут что то есть
}
var menu = $(".menu li");
var i = 0;
menu[i].addEventListener("click",menuFunc,false);
i++;
menu[i].addEventListener("click",menuFunc,false);
i++;
menu[i].addEventListener("click",menuFunc,false);

"скрипт" приведенный выше выполняется без ошибок. А вот скрипт приведенный ниже выполняется с ошибкой : "Cannot read property 'addEventListener' of undefined".
var menu = $(".menu li");
function menuFunc () {
	// тут что то есть
}
for(var i = 0; i <= menu.length; i++){
	menu[i].addEventListener("click",menuFunc,false);
}


Вопрос: Почему ?

Объясните или покидайте ссылки то теме(на рускоязычные ресурсы) ибо мой поиск мне ничего не дал, собственно поэтому и решил задать вопрос на форуме.
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2016, 15:06
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

for(var i = 0; i <= menu.length - 1; i++)

Последний раз редактировалось Lemme, 01.02.2016 в 15:09.
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2016, 15:09
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

regimentor,
for(var i = 0; i <= menu.length; i++)
menu.length - количество элементов массива.
i - индекс элемента массива.
i = menu.length - за пределами массива
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2016, 16:09
Новичок на форуме
Отправить личное сообщение для regimentor Посмотреть профиль Найти все сообщения от regimentor
 
Регистрация: 01.02.2016
Сообщений: 2

Примного благодарен
Ответить с цитированием
  #5 (permalink)  
Старый 01.02.2016, 20:29
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

regimentor,
https://jsfiddle.net/daniilKhanin/oat9aakL/1/

У меня всё работает... странно, а че ты jquery юзаешь? попробуй VanillaJs
Ответить с цитированием
  #6 (permalink)  
Старый 02.02.2016, 11:07
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

DynkanMaclaud,
В вашем примере, если посмотреть
var menu = $(".menu li");
    alert(menu.length);

то увидим 3, тогда как в li прописываются значения 0,1,2
т.е. в вашем варианте ошибка тоже есть, только она маскируется исполняющей системой.
Код внешне отрабатывает чисто, сообщение об ошибке видно только в консоли.
Думаю, это не лучший стиль программирования - закладывать в коде ошибку в надежде на то, что система ее адекватно обработает, а потом ломать голову

Последний раз редактировалось Dilettante_Pro, 02.02.2016 в 11:27.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна платная консультация imr Angular.js 0 16.10.2014 17:56
Нужна платная консультация по разработке расширений для Google Chrome Dimaz Javascript под браузер 3 10.07.2014 13:35
Очень нужна консультация и помощь людей знающих derbass jQuery 8 28.01.2013 16:45
Нужна консультация по JScript Grot Работа 4 19.10.2010 15:53
Нужна консультация Dub_xrenov Общие вопросы Javascript 3 24.02.2010 14:42