所以我现在的功能非常简单......
setUpButtons: function(items) {
console.log(typeof items); //Logs Object
console.log(items); //Logs ["<li class="0">Click Me</li>", "<li class="1">Click Me Too</li>"]
for(var index in items) {
console.log(items[index]); //does not log
console.log("HELLO"); //does not log
}
}
我看不出我无法循环的原因。我已经尝试过$(items).each(function(),也没有输出。有什么想法吗?这是item对象的构建方式......
setButtons: function(type) {
var that = this;
var items = [];
$.getJSON("button_list.php?type=" + type, function(data) {
$.each(data.buttons, function(key, val) {
console.log(items);
items.push("<li class='" + key + "'>" + val + "</li>");
});
console.log(items);
});
that.buttons = items;
},
答案 0 :(得分:3)
您在一个数组上使用for in
,该数组没有要分配给index
的属性,就像您在对象文字上进行迭代一样。
替换为:
for(var i = 0, len = items.length; i < len; i++){
console.log(items[i]);
console.log('HELLO');
}
答案 1 :(得分:0)
我认为你想要一个带有你所显示语法的“Foreach”......选项可能是
foreach (var x in items) {
// do something with items[x]
}
或
for (var x = 0; x<items; x++) {
// do something with items[x]
}
我认为你不能将两者结合起来
答案 2 :(得分:0)
添加到@EricWendelin,您可以尝试使用forEach:
var d = {
setUpButtons: function(items) {
console.log(typeof items); //Logs Object
console.log(items); //Logs ["<li class="0">Click Me</li>", "<li class="1">Click Me Too</li>"]
items.forEach(function(t) {
console.log(t);
})
} }
d.setUpButtons(['<li class="0">Click Me</li>', '<li class="1">Click Me Too</li>']);