2011-12-09 58 views
1

頁面包含沒有id的元素 - 僅限於名稱。如何通過JavaScript來訪問它們?如何在javascript中按名稱訪問元素?

document.getElementById('id').value := "..."; 

更新:

感謝所有!是否可以使用指定的值(單選按鈕)訪問元素?

<nobr><label><input style="vertical-align:middle" type="radio" name="name" value="value1" checked="checked"/><span style="vertical-align:middle" class="label">value1</span></label></nobr><br/> 
<nobr><label><input style="vertical-align:middle" type="radio" name="name" value="value2"/><span style="vertical-align:middle" class="label">value2</span></label></nobr><br/> 

回答

0

其他回答涵蓋您的原始問題。關於你提到的有關價值訪問更新,沒有getElementsByValue()功能,但如果你打算選擇一種既具有指定名稱和值,你可以做這樣的事情的特定單選按鈕:

function getElementByNameAndValue(n, v) { 
    var els = document.getElementsByName(n), 
     i; 

    for (i=0; i < els.length; i++) 
     if (els[i].value == v) 
     return els[i]; 

    return null; 
} 

var r = getElementByNameAndValue("name", "value1"); 

以上功能將返回對第一個匹配元素的引用,如果沒有匹配,則返回null。如果你想允許多個元素具有相同的名稱和值,你可以修改它以返回一個數組(儘管我不知道爲什麼你會有多個具有相同名稱和值的元素,至少不是與單選按鈕)。

請注意,這也可以很容易地修改,以返回一個引用到當前檢查的元素,只要將if在循環中更改爲if (els[i].checked)

您或許可以使用document.querySelector()來做一些或全部的工作,但我並不是自己使用它,因爲我需要支持較老的IE。你絕對可以用一行jQuery代替上述所有內容。

+0

感謝您的幫助! 「name」是n。 – Dmitry

+0

對不起,修正了這個問題。 – nnnnnn

2

使用document.getElementsByName('elementName')。這會給你一個類似數組的集合,通過索引獲取元素

+4

'document.getElementByName'未定義。只有複數存在。 –

+0

@Kinkink - 有時最好只編輯答案。 – RobG

6
document.getElementsByName('name') 

這將返回一個nodeList,您可以像數組一樣訪問它。

3

存在DOM HTML getElementsByName方法,該方法返回具有該名稱的節點的collection。請注意,名稱屬性不必是唯一的,因此您可能會得到多個屬性,並且返回的集合是活動的,因此,使用主題名稱添加或刪除元素將修改集合。