Всем привет поясните как это работает.... Код (Javascript): var inputs = document.getElementsByClassName("com"); //получили все блоки с классом com for (var i = 0; i < inputs.length; i++) //цикл, перебирает что получено в предыдущей строке { inputs[i].addEventListener("click", ide); //а вот тут нифига не пойму. Обработчик события внутри цикла, в какой-то момент запускает функцию? В какой? } function ide(){ alert(this.id); }
Это не обработчик события внутри цикла. Это навешивание обработчика. То бишь всем элементам в массиве поочередно вешаем на клик вызов функции ide. Все. Теперь при клике на элементы с классом com будет вызвана ide.
спасибо, ясно, так и работает --- Добавлено --- вот не пойму только, почему если вешаю непосредственно на див, id не показывает undefined Код (Javascript): <div id="fp_{{dv}}" class="com" onclick="ide()"> function ide(){ alert(this.id); }
HTML: <div id="fp_{{dv}}" class="com" onclick="ide(this)"> Код (Javascript): function ide(el){ alert(el.id); } так попробуйте
функция должна быть сверху - перед исполнением "имя" функции --- Добавлено --- Код (Javascript): # функция function ... () { } # исполнитель функции function ();
Только в том случае, если она объявляется, как выражение (Function Expression). Если же декларируется (Function Declaration), как у вас в примере, то где будет её исполнитель вызов - строго пофиг... главное, чтобы в области видимости.