html文件如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
<button type="button" id="demo" onclick="myClick()">单击</button>
<button type="button" id="demo1" >试一试</button>
<p id="demo2"></p>
</body>
</html>
js文件如下:
function myClick() {
alert("hello world");
document.getElementById("demo").innerHTML = "222222";
}
document.getElementById("demo1").addEventListener("click", displayDate);
function displayDate() {
document.getElementById("demo2").innerHTML = Date();
}
如上两端代码所示,在浏览器中运行时,会出现 Cannot set property 'addEventLister' of null问题,原因是在html程序时由上而下执行,运行到document.getElementById("demo1").addEventListener("click", displayDate)时,没有找到"demo1"这个元素,所以就会提示错误信息(“null”),所以运行时代码没有任何效果,解决方法如下:
将document.getElementById("demo1").addEventListener("click", displayDate)语句放在window.onload = function(){}中,:
window.onload = function(){
document.getElementById("demo1").addEventListener("click", displayDate);
function displayDate() {
document.getElementById("demo2").innerHTML = Date();
}
function myClick() {
alert("hello world");
document.getElementById("demo").innerHTML = "222222";
}
}
如上所示,问题就可以解决,onload事件是在html页面加载完成后执行此事件,避免在head标签中引入js文件后,直接运行js文件而导致相应元素未找到问题;