5

配列内の同じ ID を持つ複数の入力から値を取得しようとしています。既にフォーラムを使用しましたが、解決策が見つかりません。

<input type="hidden" value="'+image_url+'" name="webcampics[]" id="webcampics">
<input type="hidden" value="'+image_url+'" name="webcampics[]" id="webcampics">
<input type="hidden" value="'+image_url+'" name="webcampics[]" id="webcampics">
<input type="hidden" value="'+image_url+'" name="webcampics[]" id="webcampics">


  var elem = document.getElementById("webcampics");
  var names = [];
  for (var i = 0; i < elem.length; ++ i) {
     names += elem[i]+'|';
  }
  var webcamval = names;
4

3 に答える 3

6

ドキュメント内に同一の IDを持つ要素を含めることはできません。ID仕様により、マークアップ全体で一意である必要があります。とにかくそれを行うと、のようなメソッドはdocument.getElementById、たとえば最初の出現のみに一致します。

classの代わりにa を使用しidsます。

<input type="hidden" value="'+image_url+'" name="webcampics[]" class="webcampics">
<input type="hidden" value="'+image_url+'" name="webcampics[]" class="webcampics">
<input type="hidden" value="'+image_url+'" name="webcampics[]" class="webcampics">
<input type="hidden" value="'+image_url+'" name="webcampics[]" class="webcampics">

var inputs = document.getElementsByClassName( 'webcampics' ),
    names  = [].map.call(inputs, function( input ) {
        return input.value;
    }).join( '|' );

デモ: http://jsfiddle.net/QgJrq/

于 2013-01-14T15:59:18.453 に答える
3

あなたが求めていることは間違っています.

  var elem = document.getElementsByTagName("input");
  var names = [];
  for (var i = 0; i < elem.length; ++i) {
    if (typeof elem[i].attributes.id !== "undefined") {
      if (elem[i].attributes.id.value == "webcampics") {
        names.push(elem[i].value);
      }
    }
  }
  var webcamval = names;

http://jsfiddle.net/5vamG/

上記の方法が間違っている理由を完全に説明した後、誰かが反対票を投じたため、しかし、あなたが求めたことを正確に実行します。これが正しい方法です。

すべての入力 ID をクラスに変更します

  var elem = document.getElementsByClassName("webcampics");
  var names = [];
  for (var i = 0; i < elem.length; ++i) {
    if (typeof elem[i].value !== "undefined") {
        names.push(elem[i].value);
      }
    }
  }
  var webcamval = names;

http://jsfiddle.net/5vamG/1/

于 2013-01-14T15:58:43.543 に答える
2
  1. 同じ を持つ要素を複数持つべきではありませんid

  2. getElementById要素を 1 つだけ返します。which を使用getElementsByNameすると、求めるリストが返されます。

于 2013-01-14T16:01:35.923 に答える