小编典典

为什么onclick元素将为label元素触发两次

html

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>

这是我的代码,当我单击“文本”时,它将向您提示两次,但是当我单击该框时,该onclick元素将仅触发一次,为什么?


阅读 356

收藏
2020-05-10

共1个答案

小编典典

当您单击标签时,它会触发单击处理程序,并且您会收到警报。

但是单击标签还会自动将click事件发送到关联的输入元素,因此将其视为对复选框的单击。然后事件冒泡会导致在包含元素(即标签)上触发click事件,因此您的处理程序将再次运行。

如果将HTML更改为此,则不会收到双重警告:

<input id="wowcb" type="checkbox" name="checkbox" value="value">
<label id="wow" for="wowcb">Text</label>

现在,标签将使用for属性与复选框相关联,而不是环绕属性。

2020-05-10