为了账号安全,请及时绑定邮箱和手机立即绑定

关于label关联radio时候的问题

关于label关联radio时候的问题

尚方宝剑之说 2018-08-30 10:05:45
话不多说 直接上代码<!DOCTYPE html><html lang="en"><head>     <meta charset="UTF-8">     <title>Document</title></head><body>     <label for="input-radio-boy">         <input id="input-radio-boy" name="sex" type="radio">男    </label>     <label for="input-radio-girl">         <input id="input-radio-girl" name="sex" type="radio">女    </label>     <script>         var labels = document.getElementsByTagName('label');        for(var i=0;i<labels.length;i++){             labels[i].onclick = function(){                 alert(1);             }         }    </script></body></html>我点击男或者女 不碰到radio的小圈圈 为什么会弹出两下1 有没有什么解决的办法 恩 我知道吧input拿到label外面就没这个现象了 还有其他方法吗? 还有这个现象的本质是什么? 谢谢各位
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

正确的关联一个label标签到一个input标签做法就是把label拿到外面,因为你已经用了for属性来表示label应该关联哪一个input:

<input id="input-radio-boy" type="radio" name="sex" value="1">
<label id="input-radio-boy-label" for="input-radio-boy">男</label>

因为label标签有一个特性,就是会传递'click'消息给关联到的input方法,按你这个写法当label标签被点击的时候,input会收到一个'click'消息,碰巧'click'消息还有一个特性是逐级向上传递的,而label又在input的上一级,因此'label'自身又会收到一次'click'消息。因此你最后看到了两次alert。


查看完整回答
反对 回复 2018-10-14
  • 1 回答
  • 0 关注
  • 1118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信