Почему addEventListener срабатывает перед событием, если вообще? [Дубликат]

На этот вопрос уже есть ответ:

Javascript Событие «addEventListener» запускается при загрузке страницы [duplicate] 2 ответа

Я экспериментировал [в jsfiddle] с функцией, созданной для добавления вновь созданногоTextNode на<p> в HTML ниже:

    <button onclick="addTextNode('YES! ');">YES!</button>
    <button onclick="addTextNode('NO! ');">NO!</button>
    <button onclick="addTextNode('WE CAN! ');">WE CAN!</button>
    <hr />
    <p id="p1">First line of paragraph.</p>

Вот и мой javascript:

    function addTextNode(text) {
        var newtext = document.createTextNode(text),
            p1 = document.getElementById("p1");

        p1.appendChild(newtext);
    }

Это отлично работает. Однако суть проявляется, когда я пытаюсь сделать свой javascript «ненавязчивым», удаляя поведение из разметки ...

    <button>YES!</button>
    <button>NO!</button>
    <button>WE CAN!</button>
    <hr />
    <p id="p1">First line of paragraph.</p>

затем используя цикл для прикрепленияaddEventListener для каждого<button>лемент @, который в свою очередь использует дочерний элементTextNode звонитьaddTextNode:

    function addTextNode(text) {
        var newtext = document.createTextNode(text),
            p1 = document.getElementById("p1");

        p1.appendChild(newtext);
    }

    var btns = document.getElementsByTagName("button");

    for(i = 0; i < btns.length; i++){
        var button = btns[i]; 
        button.addEventListener("click", addTextNode(button.innerHTML));
    }

Две странные вещи случаются с моим кодом:
Когда [jsfiddle's] Код Wrapля @ установлено значение «без переноса - в голове», ничего не происходи

Но когда Код Wrap имеет значение «onLoad», «onDomReady» или «без переноса в теле», функция запускается до щелчка, и я получаюэт.

Может кто-нибудь сказать мне, что мне не хватает?

Ответы на вопрос(2)

Ваш ответ на вопрос