2010-11-15 48 views
0

我有一個JavaScript函數,它是這樣的:兩個ID對javascript函數

function change_one() 
{ 
var one = document.getElementById("one").value; 

document.getElementById("tag").value=one; 
} 

直至有兩個要素相同的ID,它工作正常。

我正在使用php從mysql獲取東西,當它循環時,它會回顯具有相同id值的輸入標籤。

我如何得到這個JavaScript代碼適用於所有ID爲「one」的輸入標籤?

回答

6

「它工作正常,直到有兩個元素相同的id。」

這完全無效。最好的解決方案是將PHP代碼更改爲使用類,或以其他方式區分。您可能會發現使用JavaScript庫來查找與該類匹配的元素會很有幫助。

編輯:使用jQuery,與tagone類:

function change_one() 
{ 
    $(".tag").val($(".one").val()); 
} 
+0

Ref:http://www.w3.org/TR/html5/elements.html#concept-id – 2010-11-15 22:42:16

+0

哦,好吧。所以我應該使用「GetElementByClassName」而不是「GetElementById」? – Lance 2010-11-15 22:42:57

+0

@Lance,是的,'getElementsByClassName'。但是,它並不是完全跨瀏覽器的,因此您可能需要使用庫。 – 2010-11-15 22:44:26

1

它正常工作,甚至那麼不精:) id屬性是唯一標識符,因此您可與具有輸入標籤頁相同的ID不能通過validation。作爲解決方法,您可以循環訪問document.forms.elements集合。

+0

文本框可能是「獨立的」,即任何形式之外,雖然迭代表單元素可能比我的getElementsByTagName – 2010-11-16 15:21:23

0

我同意最好是有效的HTML,但生活有時會不公平,有時我們必須打破一些規則來實現某些東西。

所以在這裏回答原來的問題,這裏是代碼,將「支持」多種輸入用相同的ID,只是追加他們的價值觀:

var arrInputs = document.getElementsByTagName("input"); 
var one = ""; 
for (var i = 0; i < arrInputs.length; i++) { 
    var oCurInput = arrInputs[i]; 
    if (oCurInput.id == "one") 
     one += oCurInput.value; 
} 
document.getElementById("tag").value=one; 

再次,如果可能的解決問題的核心通過使用「class」而不是「id」,但如果由於某種原因它不是一個選項,請使用上面的代碼。