За последние 24 часа нас посетили 22812 программистов и 1226 роботов. Сейчас ищут 783 программиста ...

Как это работает?

Тема в разделе "JavaScript и AJAX", создана пользователем oleg_, 22 окт 2016.

  1. oleg_

    oleg_ Активный пользователь

    С нами с:
    28 ноя 2012
    Сообщения:
    105
    Симпатии:
    2
    Всем привет
    поясните как это работает....
    Код (Javascript):
    1. var inputs = document.getElementsByClassName("com");
    2. //получили все блоки с классом com
    3.     for (var i = 0; i < inputs.length; i++)
    4. //цикл, перебирает что получено в предыдущей строке
    5. {
    6.     inputs[i].addEventListener("click", ide);
    7. //а вот тут нифига не пойму. Обработчик события внутри цикла, в какой-то момент запускает функцию? В какой?
    8.     }
    9. function  ide(){
    10.   alert(this.id);
    11. }
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Это не обработчик события внутри цикла. Это навешивание обработчика. То бишь всем элементам в массиве поочередно вешаем на клик вызов функции ide. Все. Теперь при клике на элементы с классом com будет вызвана ide.
     
  3. oleg_

    oleg_ Активный пользователь

    С нами с:
    28 ноя 2012
    Сообщения:
    105
    Симпатии:
    2
    спасибо, ясно, так и работает
    --- Добавлено ---
    вот не пойму только, почему если вешаю непосредственно на див, id не показывает undefined
    Код (Javascript):
    1. <div id="fp_{{dv}}" class="com" onclick="ide()">
    2. function  ide(){
    3.   alert(this.id);
    4. }
     
  4. Poznakomlus

    Poznakomlus Активный пользователь

    С нами с:
    12 сен 2014
    Сообщения:
    96
    Симпатии:
    19
    Адрес:
    Киев
    HTML:
    1. <div id="fp_{{dv}}" class="com" onclick="ide(this)">
    Код (Javascript):
    1. function  ide(el){
    2.         alert(el.id);
    3.     }
    так попробуйте
     
    oleg_ нравится это.
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    функция должна быть сверху - перед исполнением "имя" функции
    --- Добавлено ---
    Код (Javascript):
    1. # функция
    2. function ... ()
    3. {
    4.  
    5. }
    6.  
    7. # исполнитель функции
    8. function ();
     
  6. oleg_

    oleg_ Активный пользователь

    С нами с:
    28 ноя 2012
    Сообщения:
    105
    Симпатии:
    2
    а ни какого исполнителя нет, только функция и онклик на диве
    вот как Poznakomlusсказал, так работает
     
  7. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Только в том случае, если она объявляется, как выражение (Function Expression). Если же декларируется (Function Declaration), как у вас в примере, то где будет её исполнитель вызов - строго пофиг... главное, чтобы в области видимости.