jQuery,未定义对象值的问题

时间:2014-09-21 14:29:45

标签: javascript arrays

你们可以告诉我为什么这段代码不起作用:

var cars;
var red = document.getElementById("redCheckBox");
var Ih = document.getElementById("lowHighselectDrpDown");

$.("itemChange").change(function(){
     $.get("test.php", function($cars){
          if (red.checked == true){
               cars += $.grep($cars, function(x){
                    return (x.colorClass == Red);
                });
          }
          if (lh.selected == true){
               cars.sort(function(a, b){
                    if (a.price > b.price){
                          return 1;
                    }
                    if (a.price < b.price){
                           return -1;
                    }
                    return 0;
               });
           }
           $.each(cars, function(i, searchList(){
                if (iNLarr[i]){
                       iNLarr[i](searchList.name);
                 }
           });
     }, "json");
});

好的,$ cars是从test.php文件中检索的一组对象。每个部分都应该没问题,因为我已经尝试过几次没有问题,基本上它将对象(汽车)数组中的信息抛出到html上。 iNLarr是一系列函数。当我尝试这段代码时,我回到Red未定义,请注意它是红色不是红色,这意味着它是对象值之一,而不是DOM函数。

每个对象都是一个名称,价格和颜色的关联数组。

另一个问题,假设有人帮助我实现这一点,你认为可以添加更多if语句,以便可以添加或减少cars变量。

编辑:

好的我把底部代码改为:

$.each(cars, function(i, searchList){
    if (searchList.name == true){
        iNLarr[i](searchList.name);
    }
    else(
        iNLarr[i]("");
    }
});

我希望不是显示名字,而是只有在有东西显示时才能显示它们。基本上这些名字都是div,我有20次潜水,目前只有三个名字。我如何制作它,因为当数组中没有对象时,只有三个显示,其余的被清空。

1 个答案:

答案 0 :(得分:1)

你的代码发生了变化:

var cars = []; // define car being an array (see @Bergi above)
// other vars here

$(".itemChange").change(function(){
    $.get("test.php", function($cars){
        if (red.checked == true){
           cars = cars.concat($.grep($cars, function(x){ // concat() needed to combine two arrays
                return (x.colorClass == "red"); // (see @mgamba above)
                // if "red" not work and cars is empty, try "Red", always quoted
           }));
        }
// at this point do console.log(cars)
// then try cars.sort() without callback-function
        if (lh.selected == true){
            cars.sort(function(a, b) {
                // console.log(b); console.log(typeof b.price);
                if (a.price > b.price){
                    return 1;
                }
                if (a.price < b.price){
                    return -1;
                }
                return 0;
           });
       }
/* rest of code */

});

如果不能正常工作,请准确说明出了什么问题。