hi2all我写的代码是当用户点击div
时改变网页的颜色但是不工作,这是我的代码,它有什么问题
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="gencyolcu" />
<title>Untitled 1</title>
<script type="text/javascript">
var x=document.getElementById("m");
x.addEventListener("click",function{
document.body.style.backgroundColor = "red";
});
</script>
</head>
<body >
<div id="m">kfjgflg</div>
</body>
</html>
您应该使用如下格式:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="gencyolcu" />
<title>Untitled 1</title>
</head>
<body>
<div id="m">kfjgflg</div>
<script type="text/javascript">
var x=document.getElementById("m");
x.addEventListener("click",function(){
document.body.style.backgroundColor = "red";
});
</script>
</body>
</html>
因为你的原始代码中有两个问题:
- 在令牌"function"之后缺少一个重要的 ()
- Javascript只有在页面或元素准备好后才会识别元素。在这种情况下,只有当您的代码在识别它的Javascript代码之后读取元素才能识别它。
上面的代码修复了这个问题。
一个重要的观察:在一些IE中,这段代码不能工作,因为使用了x.a dedeventlistener,在这种情况下,你可以将匿名函数转换为普通函数(带有名称)并使用addEventListener(如果可用)和onclick(建议用于旧IE)进行侦听。 这样,代码看起来像:<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="gencyolcu" />
<title>Untitled 1</title>
</head>
<body>
<div id="m">kfjgflg</div>
<script type="text/javascript">
function changeColor(){
document.body.style.backgroundColor = "red";
}
var x=document.getElementById("m");
if(!!x.addEventListener){ //If exists
x.addEventListener("click", changeColor);
}
x.onclick = changeColor; //It's a property, and ALWAYS can be set (but in some cases is not recognized)
</script>
</body>
</html>
下面是一个工作示例,代码如下:http://jsfiddle.net/fjorgemota/qCXH3/
如果你打开了JavaScript错误控制台,它会告诉你不能访问undefined
的属性/方法addEventListener
您需要在 DOM树构建完成后查找元素m
。放到DOMContentLoaded
上调用的函数中:
document.addEventListener('DOMContentLoaded', function() {
/* ... */
}, false);
或将您的脚本放在<body>
的末尾。