javascript - 除非您单击标签中的图像,否则 IE onClick 不会选中复选框?

标签 javascript css internet-explorer html checkbox

好的,我有一个标签,这个标签里面是一个div,里面有一张图片,还有一些文字。 div 有一个对 javascript 函数的 onClick 调用,它改变了标签内 div 的颜色,并且还检查了复选框(出于某种原因,IE 和 firefox 不想正确检查它,chrome 工作正常)。 Javascript:

<script language="javascript" type="text/javascript">
   function changecolor(id, chck1, firstcolor, secondcolor)
                {

                    divid = document.getElementById(id);
  chkboxid = document.getElementById(chck1);
  if(chkboxid.checked){
                    divid.style.background= firstcolor;
   var ua = navigator.userAgent.toLowerCase();
   if (ua.indexOf('safari/') == -1){
    chkboxid.checked = false ;
   }
  }
  else{
  divid.style.background= secondcolor;
   var ua = navigator.userAgent.toLowerCase();
   if (ua.indexOf('safari/') == -1){
    chkboxid.checked = true ;
   }
  }
                }

html:

<input type="checkbox" id="idbox" name="cboxwithlabel" value="Another check box"><label for="idbox"><div class="listing" onClick="changecolor('Test33', 'idbox', '#09C', '#0F0');" id="Test33">Another checkbox<img src="images/checkmark.png" height="80" width="80" /></div></label>

好的,所以在 Firefox 和 Chrome 中使用它可以正常工作,但是 IE 7(尚未测试其他版本),它只会在您单击 div 内的图像时选中该复选框。单击 div 本身,只会更改背景颜色。那么有什么办法可以让 IE 正常工作,以便在您单击 div 时它也选中复选框?

最佳答案

浏览器做的一件好事是触发来自 <label> 的点击事件元素 for us .

所以我的建议是将点击处理程序附加到复选框本身。这样你的功能就变得简单多了。

此外,将 block 级元素放在行级元素内是非法的,所以我更改了您的 <div><span>并使用 CSS 使其呈现为 block 级元素。

<html>
<head>

<script language="javascript" type="text/javascript">
  function changecolor( cbox, divId, firstcolor, secondcolor )
  {
    document.getElementById( divId ).style.background = cbox.checked ? firstcolor : secondcolor;
  }
</script>

<style type="text/css">
  span.listing {
    display: block;
  }
</style>

</head>
<body>

<input type="checkbox" id="idbox" name="cboxwithlabel" value="Another check box" onClick="changecolor(this, 'Test33', '#09C', '#0F0');">
<label for="idbox">
  <span class="listing" id="Test33">
    Another checkbox<img src="images/checkmark.png" height="80" width="80"  onclick="this.parentNode.click()" />
  </span>
</label>

</body>
</html>

关于javascript - 除非您单击标签中的图像,否则 IE onClick 不会选中复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1342658/

相关文章:

html - 使用 CSS 和 IE 旋转文本

javascript - IE9 中的 Angular JS 页面加载问题

javascript - 使用数组中的键过滤对象

html - 如何解决 Bootstrap 中的嵌套列

javascript - 当用户取消选择 div 时停止代码运行

CSS:IE 中的无序列表 <ul> 缩进问题

html - 有没有办法在ie11中查看css错误?

JavaScript/Flash : When exactly are flash external callback methods triggered?

javascript - 想要将变量传递给 Node 异步的 map 方法

javascript - 只接受季度 float