2015-08-03 87 views
2

我想在單擊按鈕後使用id在我的html文件中獲取兩個<p>元素的名稱。但在我的代碼中,當我點擊按鈕時,它只輸出「打印」。我怎樣才能做到這一點?如何在JavaScript中使用ID獲取值多個標籤?

這是我的HTML代碼:

<p id="name" name="print">hey</p>  
<p id="name" name="this">hey</p>  
<button id="btn11">test11</button> 

這是我的javascript代碼:

$("#btn11").click(function(){ 
    alert($("#name").attr("name")); 
}); 
+3

Id在HTML中是唯一的 –

+7

使用'class'而不是'id' – Sapikelio

回答

4

ID必須是唯一的HTML。相反,ID採用類這樣

的HTML:

<p class="name" name="print">hey</p>  
<p class="name" name="this">hey</p>  
<button id="btn11">test11</button> 

的jQuery:

$("#btn11").click(function(){ 
    var getName = $(".name").map(function() { 
     return $(this).attr("name"); 
    }).get(); 
    console.log(getName); 
}); 
+0

謝謝!它確實有幫助。 –

+0

@JemuelElimanco - 很高興幫助:-) –

1

在HTML,則不應使用dupicate的ID,還是要在這裏使用相同的代碼其中工程如你預期

$("#btn11").click(function() { 
    $("p[id='name']").each(function (e) { 
     alert($(this).attr("name")); 
    }); 
}); 

DEMO HERE

4

使用類而不是ID和

<p class= "name" name = "print">hey</p> 

<p class= "name" name = "this">hey/p> 

<button id="btn11">test11</button> 

$("#btn11").click(function(){ 
    $('.name').each(function() { 
    alert($(this).attr('name')); 
    }); 
}); 
2

id應該在HTML獨一無二的。您應該使用class屬性:

<p class="name" data-name="print">hey</p> 
<p class="name" data-name="this">hey</p> 
<button id="btn11">test11</button> 

$("#btn11").click(function(){ 
    $.each($(".name"), function(i, v) { 
     console.log($(v).data("name")) 
    }) 
}); 

而且,name不是<p>標籤的屬性。請參閱Element.name

0

id應該是唯一的。不建議在html文檔中使用重複的id。 仍然如果你想繼續你的舊代碼。

你也可以做這樣的

document.querySelectorAll('p[id=name]')[0] 
0

非常不好的做法。

兩個單獨的元素不應包含相同的ID和名稱。應用類名並通過類名進行迭代(使用每個類或地圖)。有很多方法可以做到這一點(我已經在這裏看到一些可靠的例子)。然後,使用data屬性爲每個元素存儲唯一的數據。

相關問題