2013-03-28 63 views
0

为什么此代码可以在IE中使用,但在Firefox中无法使用?selectedIndex在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; 
} 
+1

定义“不起作用”。你期望'elems [i] .studentid'是什么? – RobG 2013-03-28 03:07:35

+0

查看下面的评论罗布。由于 – Fandango68 2013-03-28 05:09:38

回答

1

这将有助于很大程度上看到相关的HTML片段。

在代码中,似乎elems[i]是选择元素,elems[i].studentid是读取命名属性studentid的尝试。相关的HTML可能是这样:

<select studentid="..." ...> 

有一个叫没有标准的HTML选择元素属性studentid,即使该属性已被添加到选择元素,因此,它不会是可作为Firefox的一个属性(可能还有其他浏览器)。因此,测试失败的:

elems[i].studentid 

了火狐将返回undefined,其计算结果为假。但是,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; 
} 
+0

我觉得你的回应实际上回答了这个问题,但回答您最初的HTML请求...... <%# Eval("StudentFamilyName") %> 0)%>' style =“cursor:pointer; “> Fandango68 2013-03-28 05:03:22

+0

...它的目的是通过查看GridView列将学生与用户点击的列进行匹配,并将行中的下拉列表切换到第一个元素(索引1) 。这将显示一个值“Present”。这是在IE中工作,但不是在Firefox中。 我认为问题是elem.selectedIndex = 1。我试图将其更改为像其他谷歌搜索代码一样的jquery,但都没有工作,事实上打破了整个事情,因为它不会在IE中工作! 但是关于“elems [i] .studentid”就是我认为问题所在的地方。 Firefox认为“studentid”是一个关键字? – Fandango68 2013-03-28 05:08:51

+0

我试过了你的最后一段代码,它工作!谢谢!!! – Fandango68 2013-03-28 05:13:47