今天我发现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上工作正常。
答案 0 :(得分:1)
这是一个&#39;功能&#39; IE浏览器他们对getElementById
的实现最初会搜索具有给定id
属性的元素。如果没有找到,则它会按name
属性搜索元素,这与规范相反。
在您的示例中,Firefox的行为是正确的,因为input
没有id
属性。
如果您想按名称查找元素,请改用getElementsByName()
方法。