IE9的getElementById()和getElementByName()是否相同?

时间:2014-11-28 11:22:30

标签: javascript jquery internet-explorer internet-explorer-9 getelementbyid

今天我发现IE9有一个奇怪的行为。(我正在开发一个旧的应用程序,它可以在IE9上正常工作,使其与firefox和chrome兼容)我已经编写了这段代码。

<html>
<head>
    <script>
        function test(){
            var o1 = document.getElementById("t0_ship_bill");
            console.log(o1.checked);
            console.log("Its executed.");
        }
    </script>
</head>
<body>
    <button onClick="test()">Test</button>
    <input type="Checkbox" class="checkbox" name="t0_ship_bill" > 
</body>
</html>

你可以看到我用过getElementById("t0_ship_bill")里面的test()函数,因为在html中没有用这个id定义这样的元素。静态IE9不会抛出错误,它能够通过名。

输出:

火狐: TypeError: o1 is null

IE9: LOG: true

LOG: Its executed.

任何人都知道IE9如何能够获取没有ID的元素,而firefox和chrome会抛出错误?

这是主要的原因,因为我的应用程序在许多行上都会在firefox上抛出错误,因为在IE上工作正常。

1 个答案:

答案 0 :(得分:1)

这是一个&#39;功能&#39; IE浏览器他们对getElementById的实现最初会搜索具有给定id属性的元素。如果没有找到,则它会按name属性搜索元素,这与规范相反。

在您的示例中,Firefox的行为是正确的,因为input没有id属性。

如果您想按名称查找元素,请改用getElementsByName()方法。