window.onload = function(){
var wow = document.getElementById("wow");
wow.onclick = function(){
alert("hi");
}
}
<label id="wow"><input type="checkbox" name="checkbox" value="value">Text</label>
这是我的代码,当我点击“文本”时,它会提示 hi 两次,但是当我点击该框时, onclick
元素只会触发一次,为什么?
原文由 dramasea 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您点击标签时,它会触发点击处理程序,您会收到警报。
但是单击标签也会自动向关联的输入元素发送单击事件,因此这被视为单击复选框。然后事件冒泡导致在包含元素(即标签)上触发单击事件,因此您的处理程序再次运行。
如果您将 HTML 更改为此,您将不会收到双重警报:
标签现在使用
for
属性与复选框相关联,而不是环绕它。演示