2012-12-07 21 views
8

Robiłem skrypt, który tworzy elementy div za każdym razem, gdy naciśnięty zostanie przycisk. Początkowo miałem funkcję o nazwie inline z atrybutem onclick, ale jslint nie tak więc przeniosłem go i zamiast próbował użyć addEventListener("click",function());Sposób korzystania z addEventListener

nigdy nie używałem addEventListener() przed więc nie jestem nawet pewien, czy jestem używając go poprawnie.

Problem polega na tym, że po załadowaniu strony tworzy się jedna div, a po naciśnięciu przycisku nic nie zrobi.

Z góry dziękuję.

tutaj jest to, co mam:

<body> 
<form> 
    <textarea id="a"></textarea>  
    <br> 
    <input value="button" type="button"> 
</form> 
<div id="content"> 
</div> 
<script> 
    /*jslint browser:true */ 
    function createEntry(text) { 
     "use strict"; 

     var div = document.createElement("div"); 
     div.setAttribute("class", "test"); 
     document.getElementById("content").appendChild(div); 
    } 
    var input = document.getElementsByTagName("input")[0]; 
    input.addEventListener("click", createEntry(document.getElementById('a').value)); 
</script> 

Odpowiedz

6

Zmiana ta linia

input.addEventListener("click", createEntry(document.getElementById('a').value)); 

do

input.addEventListener("click", function(){ 
createEntry(document.getElementById('a').value); 
}); 
+0

Dziękuję za poświęcony czas. :] –

4

Spróbuj użyć biblioteki JavaScript jQuery jak na razie obsługi i manipulacji DOM, aby mieć przeglądarkę bezpieczna i jednolitości.

Można użyć obsługi zdarzeń w jQuery tak:

$(<element_selector>).on("click", function (event) { 
    // your code here... 
}); 
+2

Wiedziałem, jak to zrobić z JQuery, ale chciałem poprawić swoje umiejętności JavaScript, pisząc bez niego. Wskazujesz jednak na bezpieczeństwo w różnych przeglądarkach. Dzięki :] –

Powiązane problemy