IE中的javascript:getElementById问题

时间:2010-09-14 11:25:17

标签: javascript html internet-explorer getelementbyid

我正在尝试使用JavaScript将点击事件附加到复选框。下面显示的是HTML和JS。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <input type="hidden" name="caution_c" value="0">
        <input type="checkbox" id="caution_c" name="caution_c" value="1" tabindex="120">
        <script type="text/javascript">
            var cb = document.getElementById('caution_c');
            cb.onclick = function() {
                alert(1);
            }
        </script>
    </body>
</html>

问题是在IE中,click事件不会触发。我缩小了问题的位置。问题是复选框之前有一个隐藏的输入,这两个元素具有相同的名称。我不确定为什么会导致问题(毕竟,我使用的是getElementById,而隐藏的元素甚至没有id)。

这种行为是否有正当理由(仅适用于IE。在Firefox中正常工作......一如既往:()?还有一个很好的解决方法(我可以做 document.getElementsByName(' caution_c')[1] 但我不想......)

3 个答案:

答案 0 :(得分:13)

Internet Explorer对nameid感到困惑 - 强烈建议将这两个属性视为相同。

您可以通过以下方式解决问题:1)确保文档中没有ID /名称冲突,或2)override IE's native getElementById-method

Read more about it here

答案 1 :(得分:1)

尝试使用其他活动,例如onchangeonfocus,看看是否能解决问题。此外,如果用户选中复选框,我认为不会触发onclick,这可能与您打算如何工作有关。

答案 2 :(得分:-1)

我同意,IE在html级别的理解方面很差。 我宁愿添加链接到按钮而不是使用锚元素,因为IE在使用document.getElementById()的锚点级别遇到问题。在按钮处尝试相同,并将适用于其他用户。