selectedIndex在firefox中不起作用,它来自于一个数组元素

selectedIndex does not work in firefox, from an array element that is

本文关键字:数组元素 一个 来自于 firefox 不起作用 selectedIndex      更新时间:2023-09-26

为什么这段代码可以在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中可以通过测试。

要访问非标准属性,应该使用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;
}
相关文章: