Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.10.2018, 23:46
Интересующийся
Отправить личное сообщение для alexkirsanov850@gmail.com Посмотреть профиль Найти все сообщения от alexkirsanov850@gmail.com
 
Регистрация: 13.10.2018
Сообщений: 21

Определение свойств массиву элементов
Доброго времени суток!

Не могу понять, почему не работает нижеследующий код?
var elems = document.getElementsByClassName('anchor');
        
        function addOnWheel(index, handler) {
            if (index < elems.length) {
                elems[index].addEventListener('wheel', handler, false);
            }
        }
        
        for (var i = 0; i < elems.length; i++) {
            addOnWheel(i, function(e) {
                elems[i].style.backgroundColor = 'green';
            })
        }


В тоже время, замечательно работает следующий:

var elems = document.getElementsByClassName('anchor');
        
        function addOnWheel(index, handler) {
            if (index < elems.length) {
                elems[index].addEventListener('wheel', handler, false);
            }
        }
        
//        for (var i = 0; i < elems.length; i++) {
            addOnWheel(0, function(e) {
                elems[0].style.backgroundColor = 'green';
            });
            addOnWheel(1, function(e) {
                elems[1].style.backgroundColor = 'green';
            });

//        }


т/е в цикле не работает
в ручную работает

В чем разница?

Последний раз редактировалось alexkirsanov850@gmail.com, 14.10.2018 в 18:04.
Ответить с цитированием
  #2 (permalink)  
Старый 13.10.2018, 23:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

alexkirsanov850@gmail.com,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 14.10.2018, 00:04
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var elems = document.getElementsByClassName('anchor');
[].forEach.call(elems, function(el){
	el.addEventListener('wheel', function(){
		el.style.backgroundColor = 'green';
	}, false);
});
Ответить с цитированием
  #4 (permalink)  
Старый 14.10.2018, 00:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от alexkirsanov850@gmail.com
В чем разница?
в том что i равно elems.length!!! когда сработает фунция handler
Пример ошибочного использования
Ответить с цитированием
  #5 (permalink)  
Старый 14.10.2018, 00:18
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Но если всё-таки говорить о первом примере (который не работает), то там в цикле при объявлении переменной вместо for (var i = 0; i < elems.length; i++) { нужно for (let i = 0; i < elems.length; i++) {
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение свойств и методов Node Luca Events/DOM/Window 1 21.06.2017 12:34
динамическое обновление свойств объекта в цикле grego Общие вопросы Javascript 3 04.12.2013 23:29
Определение столкновения элементов на js Антон Крамолов Общие вопросы Javascript 10 03.02.2013 21:04
DOM, определение стиля элементов Maximor17 Общие вопросы Javascript 3 04.11.2010 16:24
Определение свойств стиля в javascript, если в CSS он задан особым образом SunnyDay Общие вопросы Javascript 13 13.03.2010 19:09