2013-03-28 62 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