9

我正在尝试使用 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]但我不想……)

4

3 回答 3

13

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

您可以通过 1) 确保文档中没有 id/name 冲突或 2)覆盖 IE 的本机 getElementById-method来修复它。

在此处阅读更多相关信息

于 2010-09-14T11:28:05.300 回答
1

尝试使用不同的事件,例如onchangeonfocus看看是否可以解决问题。onclick此外,如果用户点击复选框,我认为不会被解雇,这可能是也可能不是你想要的工作方式。

于 2010-09-14T11:34:43.930 回答
-1

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

于 2017-12-15T10:17:06.867 回答