为什么在IE6/7中NodeList未定义?
<form action="/" method="post" id="testform">
<input type="checkbox" name="foobar[]" value="1" id="" />
<input type="checkbox" name="foobar[]" value="2" id="" />
<input type="checkbox" name="foobar[]" value="3" id="" />
</form>
<script type="text/javascript" charset="utf-8">
(function () {
var el = document.getElementById('testform')['foobar[]']
if (el instanceof NodeList) {
alert("I'm a NodeList");
}
})();
</script>
Run Code Online (Sandbox Code Playgroud)
这适用于FF3/Safari 3.1,但在IE6/7中不起作用.任何人都有任何想法如何检查el是否是所有浏览器的NodeList实例?
Ada*_*nco 15
" 鸭子打字 "应始终有效:
...
if (typeof el.length == 'number'
&& typeof el.item == 'function'
&& typeof el.nextNode == 'function'
&& typeof el.reset == 'function')
{
alert("I'm a NodeList");
}
Run Code Online (Sandbox Code Playgroud)
我只会使用总是评估为某种类型的东西。然后,您只需执行真/假类型检查即可查看是否获得了有效的对象。在您的情况下,我将像您现在一样获取对选择项的引用,然后使用其 getOptions() 方法来获取表示选项的 HTMLCollection。该对象类型与 NodeList 非常相似,因此使用它应该没有问题。