你们可以告诉我为什么这段代码不起作用:
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次潜水,目前只有三个名字。我如何制作它,因为当数组中没有对象时,只有三个显示,其余的被清空。
答案 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 */
});
如果不能正常工作,请准确说明出了什么问题。