24

1ページに多くの入力があります。jQueryを使用して、各入力の名前と値を含む連想配列を作成したいと思います。私はもう試した:

<input class="activeInput" type="text" name="key1" value="red">
<input class="activeInput" type="text" name="key3" value="France">

inputValues = $('.activeInput').val();

編集-洞察に満ちたコメントのおかげで、おそらくオブジェクトを作成する方が良い方法のようです。代わりにオブジェクトを作成する方法について何か提案はありますか?

4

6 に答える 6

55

.each()次のように、要素を反復処理し、名前と値をマップ (プレーン オブジェクト) に追加するために使用できます。

var map = {};
$(".activeInput").each(function() {
    map[$(this).attr("name")] = $(this).val();
});

alert(map.key1); // "red"

実際に見てください

于 2012-10-23T18:19:48.827 に答える
6

それらをループで実行することにより、文字列でアクセス可能な値を持つオブジェクトを作成できます。Javascript には連想配列の概念はありませんが、ブラケット構文を使用すると、PHP で連想配列が機能するのとほぼ同じ方法で、オブジェクトのプロパティにアクセスできます。

var values = {};
$('.activeInput').each(function() {
    values[this.name] = this.value;
});

console.log(values['key1'], values['key3']);
// Note, this is the same as above.
console.log(values.key1, values.key3);

コンソールに次のように表示されます。赤のフランス

ここにJsFiddle http://jsfiddle.net/rEtVt/があります。

これは、クイック ルックアップに使用されるハッシュマップ (概念) とも呼ばれます。

于 2012-10-23T18:28:13.727 に答える
2
var inputValues = new Array();
$('input').each(function(){
    inputValues[$(this).attr('name')] = $(this).val();
});

もちろん、すべての入力の値が必要であると仮定しています。


そうは言っても、使用しない多くの理由と Array が私の注意を引きました。

于 2012-10-23T18:19:30.217 に答える
1

ajax 送信用にフォームをシリアル化する必要がある場合は、serializeおよびserializeArray jQuery メソッドを確認する必要があります。nameサーバー上で配列を作成する必要がある同じ属性を持つ多くの入力がある場合、特殊なケースが発生する可能性があります。

それ以外の場合は、フォーム要素で jquery を呼び出しserializeArray、その結果を繰り返し処理してオブジェクトに変換します。

UPD: 例を追加http://jsfiddle.net/zQNUW/

于 2012-10-23T20:02:27.337 に答える
-1

これを試して:

var values = new Object() // creates a new instance of an object
$('.activeInput').each(function() {
    values[$(this).attr('name')] = $(this).val()
})

オブジェクトのプロパティを確認するには:

output = ""
for (property in values) {
  output += property + ': ' + values[property]+'; ';
}
alert(output)
于 2012-10-23T18:18:12.627 に答える