您的位置:首页 > 其它

由于dom结构的改变导致事件处理程序找不到事件主体报错的解决方法

2017-08-11 18:39 309 查看
在编程的过程我们可能给一个dom对象注册了一个事件处理程序,而这个dom对象一开始是不存在的,可能要触发另一个事件才会生成这个dom对象。这时候可能会报错Uncaught TypeError: Cannot set property ‘onclick’ of null找不到事件源

如下面这个例子:为一个按钮button注册一个点击事件,点击后执行一条alert语句。但这个按钮一开始不存在。

//由于按钮button还不存在,而函数 btn_click();已经执行了,当然会找不到事件源而报错。
<body>
</body>
<script type="text/javascript">
window.onload = function(){

btn_click();
show_btn();
}
function show_btn(){
document.write(`<button id="btn">按钮</button>`);

}
function btn_click(){
document.getElementById('btn').onclick = function(){
alert('hello world');
}
}
</script>

//我们可以把函数btn_click()放在函数show_btn()的函数体的末尾执行,这样就确保只有等按钮出现了再给它注册事件处理程序,从而保证了程序的正常运行。
<script type="text/javascript">
window.onload = function(){

show_btn();
}
function show_btn(){
document.write(`<button id="btn">按钮</button>`);
btn_click();
}
function btn_click(){
document.getElementById('btn').onclick = function(){
alert('hello world');
}
}
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐