2012-12-07 63 views
8

Tôi đã tạo một tập lệnh tạo các phần tử div mỗi lần nhấn nút. Ban đầu tôi đã có hàm gọi là inline với thuộc tính onclick, nhưng jslint không thích nó nên tôi đã di chuyển nó ra và thay vào đó cố gắng sử dụng addEventListener("click",function());Cách sử dụng addEventListener

Tôi chưa từng sử dụng addEventListener() trước đây nên tôi thậm chí không chắc chắn sử dụng nó một cách chính xác.

Vấn đề là nó tạo một div khi tải trang và sẽ không làm bất cứ điều gì khi nhấn nút.

Cảm ơn bạn trước.

đây là những gì tôi có:

<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> 

Trả lời

11

Thay đổi người nghe sự kiện như thế này

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

như nó đứng, bạn đang đi qua kết quả của createEntry như một người biết lắng nghe sự kiện , không phải chức năng chính nó

Thông tin thêm tại đây:

https://developer.mozilla.org/en/docs/DOM/element.addEventListener

+0

Ah! Cảm ơn vi đa danh thơi gian cho tôi. :] –

6

Thay đổi dòng này

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

vào

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

Cảm ơn bạn đã dành thời gian. :] –

4

Hãy thử sử dụng một thư viện JavaScript như jQuery để xử lý sự kiện và thao tác DOM, là trình duyệt an toàn và cho thống nhất.

Bạn có thể sử dụng các trình xử lý sự kiện trong jQuery như sau:

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

Tôi biết làm thế nào để làm điều đó với JQuery, nhưng tôi muốn cải thiện kỹ năng Javascript của tôi bằng cách viết mà không có nó. Mặc dù vậy, bạn mang lại một điểm tốt về an toàn cho trình duyệt chéo. Cảm ơn :] –

Các vấn đề liên quan