【问题标题】:PHP/JavaScript check/uncheck working in FF but not working in IEPHP/JavaScript 检查/取消检查在 FF 中工作但在 IE 中不工作
【发布时间】:2012-07-01 21:52:08
【问题描述】:

我被一个简单的功能卡住了,它似乎不适用于不同的浏览器。

我需要有一个带有选中/取消选中其他复选框(子复选框)功能的复选框(主复选框)。单击主复选框时,它自己的状态必须转移到其他复选框的列表中。 例如:如果主复选框未选中并被单击(因此被选中),则所有子复选框也应被选中。

下面的代码在 Firefox 13.0.1 中运行良好,但在 Internet Explorer 9 中却不行。

以下所有代码都在同一个文件中:

JavaScript

<script type="text/javascript">
    function toggle(source) {   
        checkboxes = document.getElementsByName('cb[]');
        for each(var checkbox in checkboxes)
            checkbox.checked = checkbox.checked == true ? false : true;
    }
</script>

选中和取消选中的复选框

<td width="3%"><input name="cb_all" type="checkbox" id="cb_all" onClick="toggle(this)"></td>

单行

<td><input name="cb[]" type="checkbox" value="<?php echo $user->id;?>" id="cb[]"></td>

我喜欢相信解决方案应该是一个简单的解决方案,但是在花了半天时间搜索之后,如果能得到一些帮助,那就太好了。你能帮我解决这个问题吗?

【问题讨论】:

  • for 循环在每个浏览器中都是语法错误。您能检查一下并确保您发布的内容与您遇到问题的实际代码完全相同吗?
  • 另外,切换布尔值的更简单方法:checkbox.checked = !checkbox.checked;
  • 你好尖。我仔细检查了一下:完全一样
  • 那个for each语法是语法错误;应该没有each
  • 我将代码修改为 checkbox.checked = !checkbox.checked;结果是一样的。在 FF 中有效,但在 IE 中无效

标签: php javascript checkbox incompatibility


【解决方案1】:

这是因为 Internet Explorer 没有名为 getElementsByName 的方法。解决方法是使用getElementsByTagName并检查每一个,您可以在http://webbugtrack.blogspot.com/2007/08/bug-411-getelementsbyname-doesnt-work.html获取更多信息

【讨论】:

  • MSDN 文档声称在 IE 中有 getElementsByName()。不过我的想法和你一样。
  • 感谢 Skatox 提供的链接。我去看看
  • 我找到了答案,或者至少找到了一个适合我的答案:
  • 有趣,所以问题出在选中的属性上。
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
相关资源
最近更新 更多