Blu*_*ire 3 javascript addeventlistener
好的,所以我尝试使用addEventListener函数创建此页面,以解决按钮的单击问题; 它没用.我通过删除除了监听器所需的基本元素之外的所有内容来缩小它,并留下以下内容:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function init(){
document.getElementById("test").addEventListener("mousedown", function(){
alert("Test successful");
});
}
body.onload = init();
</script>
</head>
<body>
<button id="test">Click</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这也不起作用,所以我知道问题在于我的上述语法.请注意,当我带走body.onload = init();并onload="init()"转入身体标签时,它确实有效:O问题是,我不想让它内联.有什么建议?
注意:请记住,这个问题不是关于JS中是如何存在错误的,即使标题可能如此建议,也是因为我可能错误地解释了它是如何无法工作的.如果您愿意,请随时重命名.
Mat*_*ens 20
首先,你应该通过访问body元素document.body.但是,onload已定义window,因此您实际需要:
window.onload = init();
Run Code Online (Sandbox Code Playgroud)
但是,这将执行该init()方法并存储返回值window.onload.显然,这不是你想要的:你希望init函数充当onload处理程序.因此,你应该写:
window.onload = init;
Run Code Online (Sandbox Code Playgroud)
虽然我也建议使用addEventListener它:
window.addEventListener("load", init);
Run Code Online (Sandbox Code Playgroud)
body.onload = init();
不是引用 body 的方法,而是使用 window - 并且不要调用那里的方法,引用它(不带括号)
window.onload=init;
通过第三个参数,即使它是假的 -
function init(){
document.getElementById("test").addEventListener("mousedown", function(){
alert("Test successful");
},false);
}
Run Code Online (Sandbox Code Playgroud)
请注意,9 版之前的 IE 不支持 addEventListener。
| 归档时间: |
|
| 查看次数: |
53280 次 |
| 最近记录: |