[英]Iterate over javascript object such that key variables are used as methods to call the object
现在,我正在将新属性硬编码到我的javascript应用程序中,并且它具有可怕的代码味道,但是我只是不了解javascript实现。 这是我的代码现在的样子:
$.getJSON(url, function(data) {
$("#total_population_2013").html(data.table.total_population_2013);
$("#median_age_2013").html(data.table.median_age_2013);
//ETCETERA, FOR A VERY LONG TIME I MIGHT ADD
});
它是一个红宝石OpenStruct对象,已将其转换为我要发送到getJSON方法的json。 反复试验的解决方案,但是我可以如上所述访问其属性。
我将添加更多要写入html id标签的变量,并且希望以更专业的方式进行操作。 这是我到目前为止已经尝试过但无法正常工作的内容:
$.getJSON(url, function(data) {
for(var k in data) {
var value = data[k];
var id_str = "#"+k;
$(id_str).html(value);
});
}
谢谢
我注意到两件事。 一种是for..in
迭代对象的所有属性,其中可以包括从原型链获得的东西。 通常这不是您想要的,所以您想这样做:
for(var k in data) if (data.hasOwnProperty(k)) {
...
}
这样可以确保您仅获得对象自己的属性。
其次,您的JSON似乎在data.table
下有其数据,相反,您只是从data
提取内容。 这意味着,您将只获得table
作为值,并且ID #table
可能没有任何#table
。 我怀疑您想要:
for(var name in data.table) if (data.table.hasOwnProperty(k)) {
$("#" + name).html(data.table[name]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.