js动态添加的radio,点击label无效

js动态添加的radio,点击label无效,应该怎么做才能点击文字就是选中... js动态添加的radio,点击label无效,应该怎么做才能点击文字就是选中 展开
 我来答
网海1书生
科技发烧友

2018-05-08 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部

首先要明确下面几点:

1、动态添加的radio必须有name属性,同一组的radio其name属性一定相同(所谓同一组就是说多个radio中只有一个被选中,其他自动恢复为未选中状态);

2、如果要关联label,则radio必须设置id属性,且id必须具有唯一性(不但radio之间的id不能相同,整个页面所有元素的id都不能相同);

3、label的for属性必须与所关联的radio相同。

下面是个已通过测试的例子:

<button id=btn>添加radio</button>
<div id=test></div>
<script>
var id=100;
window.onload=function(){
   document.getElementById("btn").onclick=function(){
      var ipt=document.createElement("input");
      ipt.name="r";
      ipt.type="radio";
      ipt.id="r"+id;
      document.getElementById("test").appendChild(ipt);
      var lbl=document.createElement("label");
      lbl.setAttribute("for","r"+id);
      lbl.innerHTML="r"+id;
      document.getElementById("test").appendChild(lbl);
      id++;
   }
}
</script>

如果把radio放到label内,也可以不设置radio的id属性和label的for属性:

<button id=btn>添加radio</button>
<div id=test></div>
<script>
window.onload=function(){
   document.getElementById("btn").onclick=function(){
      var lbl=document.createElement("label");
      lbl.innerHTML="r"+parseInt(Math.random()*1000);
      var ipt=document.createElement("input");
      ipt.name="r";
      ipt.type="radio";
      lbl.appendChild(ipt);
      document.getElementById("test").appendChild(lbl);
   }
}
</script>
追问

我说的动态添加是这样的,但是for没有用,点击文字没有反应。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式