将JSON属性映射到HTML ID以轻松设置值

时间:2012-10-04 21:42:21

标签: javascript jquery json

假设我有以下内容:

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中是否有某种方法可以将两者动态映射在一起。我希望这是有道理的。

6 个答案:

答案 0 :(得分:5)

您可以使用val方法:

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

http://jsfiddle.net/GKUMk/

答案 1 :(得分:1)

$("#name").val(address.name);
$("#addressOne").val(address.addressOne);

答案 2 :(得分:0)

$.each($("input"), function(idx, input) {
   if (address[input.attr("id")]) {
       address[input.attr("id")]
   }
});

答案 3 :(得分:0)

你可以试试这个

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

DEMO

答案 4 :(得分:0)

我认为这可行,但我将var地址重新定义为JSON对象。

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

迭代器可以是:

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

我希望这会有所帮助。

答案 5 :(得分: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/