为什么这段代码可以在IE中运行,但在Firefox中却不行?
elems = document.forms[0].getElementsByTagName("select");
for (i = 0; i < elems.length; i++) {
if (elems[i].studentid && elems[i].studentid == studid && elems[i].selectedIndex == 0)
elems[i].selectedIndex = 1;
}
答案 0 :(得分:1)
查看相关的HTML片段会有很大帮助。
在代码中,似乎elems[i]
是一个select元素,elems[i].studentid
是尝试读取名为 studentid 的属性。相关的HTML可能如下:
<select studentid="..." ...>
没有名为 studentid 的标准HTML选择元素属性,因此即使该属性已添加到select元素,它也不会在Firefox(可能是其他浏览器)中作为属性使用。因此,测试失败了:
elems[i].studentid
Firefox将返回undefined
,其评估为false。但是,IE确实将非标准属性添加为属性,因此如果已设置属性,则测试可以在IE中传递。
要访问非标准属性, getAttribute 方法应该用于跨浏览器兼容性,因此测试可能是:
elems[i].hasAttribute('studentid') && elems[i].getAttribute('studentid') == studid ...
hasAttribute
测试中似乎没有任何值,因此可能会被删除。由于多次使用elems[i]
,我还会存储结果:
var elem = elems[i];
if (elem.getAttribute('studentid') == studid && elem.selectedIndex == 0) {
elem.selectedIndex = 1;
}