我正在尝试在通过JSON返回的javascript(使用jQuery)对象中迭代一堆变量,而不必指定每个变量名。
我想要做的是遍历对象的以下元素并测试它们的值:
obj.pract_0
obj.pract_1
obj.pract_2
obj.pract_3
..
..
obj.pract_100
我正在尝试的方法如下:
for (var i = 0; i < 10; i++) {
var pract_num = ++window['obj.pract_' + i];
if (pract_num == 1) {
var pract = '#pract_' + i;
$(pract).attr('checked', 'checked');
}
}
我从这里得到了NaN,还有另外一种方法吗?我的问题很明显来自var pract_num = ++window['obj.pract_' + i];
而且我不确定我是否正确地做了。
我宁愿不必修改生成JSON的代码,虽然我不太清楚我是怎么做的。
答案 0 :(得分:3)
直接引用obj
,而不是通过window
...
var obj = window['myObj']; // if needed
for (var i = 0; i < 10; i++) {
var pract_num = ++obj['pract_' + i]; // magic
if (pract_num == 1) {
var pract = '#pract_' + i;
$(pract).attr('checked', 'checked');
}
}
您收到NaN
,因为您尝试增加(++
)对非数字内容的引用。
答案 1 :(得分:0)
for (var p in obj) {
var pract = obj[p];
if (???) {
$('#'+p).attr('checked', 'checked');
}
}
你在pract_num
周围所做的事情似乎已被打破或被误导,至少没有额外的背景。