为什么这段代码可以在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;
}
看到相关的HTML片段将大有帮助。
在代码中,elems[i]
似乎是一个选择元素,而elems[i].studentid
试图读取名为studentid的属性。相关的HTML可能像这样:
<select studentid="..." ...>
没有名为studentid的标准HTML选择元素属性,因此即使该属性已添加到select元素中,它也不能作为Firefox(可能还有其他浏览器)中的属性使用。因此,在:
处测试失败elems[i].studentid
, Firefox将返回undefined
,计算结果为false。但是,IE确实添加了非标准属性作为属性,因此如果设置了该属性,则在IE中可以通过测试。
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;
}