2013-05-12 59 views
0

這段代碼有什麼問題?我在IE10和Firefox中測試了它,但沒有提出click事件。爲什麼點擊事件沒有提出?

<html> 
    <head> 
    <title>Sandbox</title> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 

    <style type="text/css" media="screen"> 
    #t1, #t2 { border: 2px solid gray; } 
    #t2 { background-color: pink; } 
    </style> 

    <script> 
    // Function to change the content of t2 
    function modifyText(new_text) { 
    var t2 = document.getElementById("t2"); 
    t2.firstChild.nodeValue = new_text;  
    } 

    // Function to add event listener to table 
    var el = document.getElementById("outside"); 
    el.addEventListener("click", function(){modifyText("four")}, false); 
    </script> 

    </head> 

    <body> 
    <table id="outside"> 
     <tr><td id="t1">one</td></tr> 
     <tr><td id="t2">two</td></tr> 
    </table> 
    </body> 
    </html> 

回答

3

JavaScript是DOM的運行前準備:

Uncaught TypeError: Cannot call method 'addEventListener' of null 

不能可靠地與DOM交互它準備好之前,所以將你的JavaScript以身體的底部。

萬一你正在考慮使用window.load = function() {...}的,附着於window.load回調將不會運行,直到資源的所有加載,這可能不是你想要的。有沒有簡單的純JavaScript的替代jQuery的$(document).ready(),但你可以使用從這裏的東西:$(document).ready equivalent without jQuery

1

使用

window.onload = function() { 
    var el = document.getElementById("outside"); 
    el.addEventListener("click", function(){modifyText("four")}, false); 
} 
相關問題