2

私が次のようなものを持っていると仮定します:

var address = {id: 100, name: "Gregg", addressOne: "111 1st Street"};

そしてHTMLフォーム:

<input id="name" />
<input id="addressOne" />

フォームのすべてのINPUT要素を反復処理し、JSONオブジェクトのプロパティに基づいてそれらの値を設定する方法があるかどうかを知りたいです。以下は私が取ることができる長いアプローチです:

$.each($("input"), function(idx, input) {
   if (input.attr("id") == "name") input.val( address.name );
   if (input.attr("id") == "addressOne") input.val( address.addressOne );
});

IFステートメントなしで上記を行う方法があるかどうか知りたいです。JavaScriptには、2つを動的にマッピングする方法がありますか?これが理にかなっていることを願っています。

4

6 に答える 6

5

val次の方法を使用できます。

$('input').val(function(i, v){
    return address[this.id]
})

http://jsfiddle.net/GKUMk/

于 2012-10-04T21:48:48.023 に答える
1
$("#name").val(address.name);
$("#addressOne").val(address.addressOne);
于 2012-10-04T21:47:35.920 に答える
0
$.each($("input"), function(idx, input) {
   if (address[input.attr("id")]) {
       address[input.attr("id")]
   }
});
于 2012-10-04T21:46:53.843 に答える
0

あなたはこれを試すことができます

$('input').each(function(){
    $(this).val(address[this.id]);
});

デモ

于 2012-10-04T21:48:36.277 に答える
0

これでうまくいくと思いますが、varアドレスをJSONオブジェクトに再定義します。

var address = {id: 100, name: "Gregg", addressOne: "111 1st Street"}

そして、イテレータは次のようになります。

$.each($("input"), function(idx, input) {
    $(this).val( address[input.id] );
});​

これがお役に立てば幸いです。

于 2012-10-04T21:56:43.170 に答える
0
<input type="text" id="name" />
<input type="text" id="addressOne" />

var address = { id: 100, name: "Gregg", addressOne: "111 1st Street" },
prop, $field;

for ( prop in address ) {
    $( "#" + prop ).val( address[prop] );
}

アドレス変数が配列ではなくオブジェクトリテラルになっていることに注意してください。

フィドル: http: //jsfiddle.net/kboucher/Gt9ND/

于 2012-10-04T21:58:51.920 に答える