Показать сообщение отдельно
  #3 (permalink)  
Старый 02.09.2018, 19:19
Интересующийся
Отправить личное сообщение для __Alex__ Посмотреть профиль Найти все сообщения от __Alex__
 
Регистрация: 18.06.2018
Сообщений: 21

Переделал по аналогии, ожидаемо заработало, т.к. по сути стало равным закомментированному куску.

<div id='1'>1: X</div>
<div id='2'>2: X</div>
<div id='3'>3: X</div>
<div id='out'></div>

<script>
    function out(id) {
        return function() {
            document.getElementById('out').innerHTML += (id + ' ');
        }
    }

    function listener(id) {
        document.getElementById(id).addEventListener('click', out(id));
        /*
                а так работает корректно!!!:
                    document.getElementById(id).addEventListener('click', function() {
                        document.getElementById('out').innerHTML += (id + ' ');
                    });
        */
    }

    listener(1);
    listener(2);
    listener(3);

</script>


Но осталось не понятно, почему работает именно так, почему не работает в первом случае? Подскажите, что почитать, чтобы разобраться в этом вопросе.
Ответить с цитированием