Javascript for循环不在对象上工作
所以我的函数现在非常简单Javascript for循环不在对象上工作,javascript,oop,Javascript,Oop,所以我的函数现在非常简单 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) {
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
}
}
设置按钮:功能(项目){
console.log(项目类型);//Logs对象
console.log(项目);//日志[“单击我” ,“也单击我” ”]
对于(项目中的var索引){
console.log(items[index]);//不记录
console.log(“HELLO”);//不记录
}
}
我看不出为什么我不能循环这个。我已经尝试过$(items)。每个(function())都没有输出。有什么想法吗?下面是items对象的构建方式
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;
},
setButtons:函数(类型){
var=这个;
var项目=[];
$.getJSON(“button_list.php?type=“+类型,函数(数据)){
$.each(数据按钮、功能(键、值){
控制台日志(项目);
推送(“”+val+“ ”);
});
控制台日志(项目);
});
即:按钮=项目;
},
我认为您需要一个具有所显示语法的“Foreach”…选项可以是
foreach (var x in items) {
// do something with items[x]
}
或
for(var x=0;x我认为您需要一个带有所显示语法的“Foreach”…选项可以是
foreach (var x in items) {
// do something with items[x]
}
或
for(var x=0;x您在一个数组上使用for,该数组没有要分配给index
的属性,就像您在一个对象文本上迭代一样
替换为:
for(var i = 0, len = items.length; i < len; i++){
console.log(items[i]);
console.log('HELLO');
}
for(var i=0,len=items.length;i
在一个数组上使用for in
,该数组没有要分配给索引的属性,就好像在对象文本上迭代一样
替换为:
for(var i = 0, len = items.length; i < len; i++){
console.log(items[i]);
console.log('HELLO');
}
for(var i=0,len=items.length;i
添加到@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>']);
var d={
设置按钮:功能(项目){
console.log(项目类型);//Logs对象
console.log(项目);//日志[“单击我” ,“也单击我” ”]
项目。forEach(功能(t){
控制台日志(t);
})
} }
d、 设置按钮(['单击我,' 也单击我, ');
添加到@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>']);
var d={
设置按钮:功能(项目){
console.log(项目类型);//Logs对象
console.log(项目);//日志[“单击我” ,“也单击我” ”]
项目。forEach(功能(t){
控制台日志(t);
})
} }
d、 设置按钮(['单击我,' 也单击我, ');
无论问题是什么,您都不应该在数组上使用for..in
。而是使用for(var i=0;i
。您是否尝试过使用普通for:for(var index=0,len=items.length;index
;for in不应用于迭代数组元素。上面编辑的代码用于显示items对象的来源。@Dan D yep尝试了我所能想到的一切来迭代它,发现如果我使用console.log(items.length)它记录为0。根本不确定这是怎么可能的无论问题是什么,您不应该在数组上使用for..in
。使用for(var i=0;i
。您是否尝试过使用普通for:for(var index=0,len=items.length;index
;for in不应用于迭代数组元素。上面编辑的代码用于显示items对象的起源。@Dan D yep尝试了我能想到的所有方法来迭代它,发现如果我使用console.log(items.length)它将记录0。不确定这在所有情况下是如何可能的,在ES5中,您将执行items.forEach(函数(item){…}
实际上,在ES5中,您将执行items.forEach(function(item){…}
这样做,它也不工作…当我console.log(typeof items)时,它输出一个对象,当我console.log(items)时,它显示[“doitems=[].slice.call(items)
然后看看会发生什么。它应该将它强制到一个数组中,因此能够在for
循环中工作。items.length怎么可能是0?这根本没有任何意义。你确定吗?它不应该。我刚刚在JSFIDLE上尝试过,它可以工作:是的,当我控制台.log(items.length)时它记录0它真的毫无意义。items中怎么可能有对象,但它的长度是0。如果这样做,它也不工作…当我控制台时。log(items的类型)它输出一个对象,当我控制台时。log(items)它显示[“Doitems=[].slice.call(items)
然后看看会发生什么。它应该将它强制到一个数组中,因此能够在for
循环中工作。items.length怎么可能是0?这根本没有任何意义。你确定吗?它不应该。我刚刚在JSFIDLE上尝试过,它可以工作:是的,当我控制台.log(items.length)时它记录为0这真的毫无意义。项目中怎么会有对象,但它的长度为0