2015-02-02 3 views
0

Когда я нажимаю на ссылку, она работает отлично, но только ОДИН РАЗ.Unstoppable addEventListener

Я хочу иметь возможность держать addEventListener даже после того, как он был выполнен.

<div id=myBox> 
    <a href="#" id="append">append</a> 
</div> 
document.getElementById("append").addEventListener("click", appendMore); 
function appendMore() { 
    myBox.innerHTML += '1'; 
} 
+4

Вы удаляете слушателя, потому что элемент заменяется новым содержанием HTML. – Eraden

ответ

4

Вы хотите использовать отдельный элемент для вставки содержимого.

document.getElementById("append").addEventListener("click", appendMore); 
 

 
function appendMore() { 
 
    tgt.innerHTML += "1"; 
 
}
<div id=myBox> 
 
    <a href="#" id="append">append</a> 
 
    <span id="tgt"></span> 
 
</div>

+0

ДА !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! – davidmarko

+1

Пожалуйста, не используйте innerHTML. Это вызывает так много ошибок, что это не стоит. – Eraden

+0

@ Eraden Итак, какова альтернатива? – davidmarko

-1

Было бы легко добиться с помощью JQuery.

$('#append').click(function() { 
    $('#myBox').append('1'); 
}); 

найти эту JSFIDDLE

NB: Пожалуйста, дайте нам знать, если вы хотите, чтобы достичь этого, используя только простой JavaScript.

+0

Я знаю, как это сделать с помощью jQuery Я спросил о javascript – davidmarko

+1

@davidmarko в защиту Sameer, вы отметили вопрос с помощью jQuery. Я бы предложил вам отредактировать свой вопрос, чтобы удалить этот тег, если вы не хотите отвечать на jQuery. –

+0

ohh .. ok. Я не мог поймать, если из вопроса. Извинения. –

1
// Parent element 
var el = document.querySelector('#myBox'); 
// Find append and add listener 
el.querySelector("#append").addEventListener("click",appendMore); 

function appendMore(event) { 
    // Append new text node 
    el.appendChild(document.createTextNode('1')); 
}