2009-10-01 55 views
1
 
<form name='form1'> 
    <select name='sel1'></select> 
</form> 

<script> 
    document.form1.sel1 ... //access element by it's name attribute, is this standard? 
</script> 
+0

我想你應該格式化更好的代碼,寫有效的代碼:使用< and > – 2009-10-01 14:42:08

回答

4

不,在DOM Level 2 HTML中未指定HTMLDocument將獲得命名形式作爲直接屬性,也不會指定HTMLFormElement將獲得命名元素作爲直接屬性。

然而,這種行爲確實可以追溯到JavaScript的最早實現(在Netscape 2中),並且由於每個瀏覽器都被複制,所以它是那些「DOM Level 0」特性之一,儘管沒有被任何標準正式認可身體肯定是事實上的標準。

我仍然不會建議使用它,因爲未來的瀏覽器可能會引入了HTMLDocument上和HTMLFormElement新的屬性(如瀏覽器在過去尤其是HTMLDocument的定期進行),其名稱可能與您的name屬性衝突。這很可能發生在document.formsform.elements屬性使用的HTMLCollection對象上。

最好還是把id放在你想參考的任何東西上,把name關閉<form>並使用明確的document.getElementById()

5

正確的語法是:

document.forms.form1.elements.sel1 

document.forms["form1"].elements["sel1"] 
0

爲什麼不document.getElementsByName('sel1')

可能有其他元素與同一文檔中的名稱(含控件類似套例如多種形式) - 戴維·多沃德31分鐘前

這就是爲什麼我總是用id代替name。我建議使用forms陣列或將id分配給元素以便於檢索。

+0

有可能是同一文檔中具有該名稱的其他元素 – Quentin 2009-10-01 14:46:43

+1

如果你工作過的域名(例如,包含控件類似套多種形式),那麼你可以在不同的窗體之間重用JS,只需切換到不同的窗體對象。 :) – Quentin 2009-10-01 15:22:26