2011-12-20 54 views
0

我有兩個span包含一個帶有相同id的HTML文本框,如「field1」。基於下拉值,在給定時間僅在屏幕上顯示這兩個範圍。顯示跨度中的任何一個或者不顯示任何一個。從兩個具有相同ID的HTML元素之一提取值

我在原型js中使用.hide();.show();來根據下拉值顯示和隱藏這些跨度。但是,只要我在提交時嘗試獲取$F('field1');的值,我只會獲得第一個HTML文本框的值(該值爲空)。

有沒有一種方法可以解決這個問題,以獲得可見的HTML文本框的值?

+6

沒有兩個元素都不應具有相同的ID - 它必須是一個唯一的標識符。這樣做違反了DTD。將元素更改爲具有不同的ID。 – Polynomial 2011-12-20 09:59:37

+1

2個元素使用class而不是ID。 – yosh 2011-12-20 10:01:23

+0

@Polynomial是的,我同意這一點,但由於某些原因,我被迫爲這兩個組件使用相同的ID。就像,我正在使用Spring。 HTML元素的表單ID應該映射到一個表單對象,因爲一次只能有一個表單對象可用。所以我不能有不同的ID。在Spring中, Abhishek 2011-12-21 05:18:40

回答

3

使用類。元素的ID應該是唯一的,因爲它是ID;)

  1. 選擇具有指定類名稱的所有元素。您將獲得具有指定類名稱的元素數組。

    var eleCollection = document.getElementByClassName("anyClassName"); 
    
  2. 在此之後,U可以通過這個數組元素的循環,並得到他們的價值觀

    for(element in eleCollection) { 
        var thisValue = element.getAttribute("value"); 
        console.log("Element: ",element," value: ",value); 
    } 
    
+0

因此,當我循環獲取每個元素時,如何獲取文本框的值?我應該使用 .innerHTML嗎? – Abhishek 2011-12-20 12:59:37

+0

請參閱編輯答案.. – Shades88 2011-12-20 13:19:20

+2

如果您使用的是Prototype,我會建議您堅持Prototype的做事方式。 '$$()'而不是'document.getElementByClassName()','array.each()'而不是'for(var in array)',等等 – dontGoPlastic 2011-12-20 18:51:12

4

id在頁面內應該是唯一的。

我假設你有不同的下拉值。如果是這樣,請爲這些跨度分配不同的id,並使用選定的下拉值選擇其中一個。

相關問題