2011-12-20 12 views
0

"field1"と同じIDを持つHTMLテキストボックスを含む2つのスパンがあります。ドロップダウン値に基づいて、これらの2つのスパンのみが所定の時間に画面に表示されます。スパンのいずれかが表示されるか、いずれも表示されません。同じIDを持つ2つのHTML要素の1つから値を取得する

プロトタイプjsで.hide();.show();を使用して、これらのスパンをドロップダウン値に基づいて表示および非表示にしています。しかし、私が送信時に$F('field1');によって値を取得しようとするたびに、私は最初のHTMLテキストボックスの値(空です)を取得します。

表示可能なHTMLテキストボックス値の値を取得する方法がありますか?

+6

を取得しませ二つの要素はこれまでと同じIDを持つべきではないことができます - それはユニークな識別子でなければなりません。そうすることで、DTDに違反します。異なるIDを持つように要素を変更します。 – Polynomial

+1

IDの代わりに2つの要素にクラスを使用します。 – yosh

+0

@ Polynomialはい私はそれに同意しますが、何らかの理由で両方のコンポーネントで同じIDを使用することを余儀なくされています。私は春を使用しています。 HTML要素のフォームIDは、一度に1つしか使用できないため、1つのフォームオブジェクトにマップする必要があります。だから私は異なるIDを持つことができませんでした。 SpringではがHTML IDとして変換されます – Abhishek

答えて

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

+0

編集された答えを参照してください。 – Shades88

+2

Prototypeを使用している場合は、プロトタイプの方法を使用することをおすすめします。 'for(var in array)'の代わりに 'document.getElementByClassName()'、 'array.each()'の代わりに '$$()'を使います。 – dontGoPlastic

4

idは、ページ内で一意である必要があります。

私はあなたが異なるドロップダウン値を持っていると仮定しています。その場合は、別のidをこれらのスパンに割り当て、選択したドロップダウン値を使用してそれらの1つを選択します。

関連する問題