Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript for循环不在对象上工作_Javascript_Oop - Fatal编程技术网

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)时,它显示[“do
    items=[].slice.call(items)
    然后看看会发生什么。它应该将它强制到一个数组中,因此能够在
    for
    循环中工作。items.length怎么可能是0?这根本没有任何意义。你确定吗?它不应该。我刚刚在JSFIDLE上尝试过,它可以工作:是的,当我控制台.log(items.length)时它记录0它真的毫无意义。items中怎么可能有对象,但它的长度是0。如果这样做,它也不工作…当我控制台时。log(items的类型)它输出一个对象,当我控制台时。log(items)它显示[“Do
    items=[].slice.call(items)
    然后看看会发生什么。它应该将它强制到一个数组中,因此能够在
    for
    循环中工作。items.length怎么可能是0?这根本没有任何意义。你确定吗?它不应该。我刚刚在JSFIDLE上尝试过,它可以工作:是的,当我控制台.log(items.length)时它记录为0这真的毫无意义。项目中怎么会有对象,但它的长度为0