具有相同ID的多個元素的JavaScript和getElementById



javascript getelementbyid value (8)

Class足以引用你想要的任何東西,因為它可以用一個或多個單詞命名:

<input class="special use">
<input class="normal use">
<input class="no use">
<input class="special treatment">
<input class="normal treatment">
<input class="no special treatment">
<input class="use treatment">

這就是你可以用css應用不同風格的方式(而Bootstrap是最好的例子)當然你可以打電話

document.getElementsByClassName("special");
document.getElementsByClassName("use");
document.getElementsByClassName("treatment");
document.getElementsByClassName("no");
document.getElementsByClassName("normal");

對於您需要的任何分組等等。

現在,在最後一種情況下,您確實希望按ID對元素進行分組。 您可以使用數字相似但不相等的ID來使用和引用元素:

<input id=1>
<input id="+1">
<input id="-1">
<input id="1 ">
<input id=" 1">
<input id="0x1">
<input id="1.">
<input id="1.0">
<input id="01.0">
<input id="001">

這樣你就可以知道數字id,通過添加額外的非無效數字字符來訪問和獲取元素,並調用一個函數來從其合法字符串標識值中獲取(通過解析等)原始索引。 它適用於以下情況:

  • 有幾行具有相似的元素,並希望連貫地處理它的事件。 無論你刪除一個還是幾乎全部 。 由於數字引用仍然存在,您可以重複使用它們並重新分配其已刪除的格式。

  • 用完類,名稱和標記名標識符。

雖然您可以使用空格和其他常用符號,即使它們不是在瀏覽器中嚴格驗證的要求,也不建議使用它們,特別是如果您要以其他格式(如JSON)發送該數據。 你甚至可以使用PHP處理這些事情,但這是一種不好的做法,傾向於骯髒的編程實踐。

https://ffff65535.com

如何通過指定其id屬性來獲取元素集合? 我想獲得html中具有相同id的所有標籤的名稱。

我想只使用getElementById()來獲取元素數組。 我怎樣才能做到這一點?


id應該是唯一的,使用屬性“name”和“getelementsbyname”代替,你將擁有你的數組。


document.querySelectorAll("#yourId"); 返回id為yourId所有元素


你不應該這樣做,即使它可能不可靠並且容易引起問題。

原因是ID在頁面上是唯一的。 即,頁面上的ID不能超過1個元素。


如果您使用d3處理具有相同類/ ID的多個對象

您可以使用d3.selectAll(“。classname”)刪除類元素的子集;

例如, http: //medcorp.co.nz上的圓環圖使用了類名為“arc”的弧對象的副本,並且有一行d3,d3.selectAll(“。arc”)。remove(); 刪除所有這些對象;

使用document.getElementById(“arc”)。remove(); 只刪除一個元素,並且必須多次調用(與上面的建議一樣,他創建一個循環來刪除對象n次)


我們可以使用document.forms [0] .Controlid


正如其他人所說,你不應該在HTML中多次使用相同的ID,但是......帶有ID的元素會附加到文檔對象和Internet Explorer上的窗口 。 參考:

帶有id的DOM樹元素是否成為全局變量?

如果HTML中存在多個具有相同ID的元素,則此屬性將作為數組附加。 對不起,但我不知道在哪裡看這是標準行為,或者至少你在瀏覽器之間得到相同的行為,我懷疑。


為什麼你想要這樣做是超出我的,因為id應該在文檔中是唯一的。 但是,瀏覽器往往對此非常寬鬆,所以如果你真的必須使用getElementById來實現這個目的,你可以這樣做:

function whywouldyoudothis() {
    var n = document.getElementById("non-unique-id");
    var a = [];
    var i;
    while(n) {
        a.push(n);
        n.id = "a-different-id";
        n = document.getElementById("non-unique-id");
    }

    for(i = 0;i < a.length; ++i) {
        a[i].id = "non-unique-id";      
    }
    return a;
}

但是,這很愚蠢,我不相信這會永遠適用於所有瀏覽器。 儘管HTML DOM規範將id定義為readwrite,但如果遇到具有相同id的多個元素,則驗證瀏覽器會抱怨。

編輯:給定一個有效的文件,可以達到同樣的效果:

function getElementsById(id) {
  return [document.getElementById(id)];
}




javascript