2014-09-21 54 views
-1

嗨誰能告訴我爲什麼這個代碼不會工作:jQuery的,具有未定義的對象值問題

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"); 
}); 

好吧,$汽車是從test.php的文件中檢索對象的數組。每個部分應該沒問題,因爲我已經嘗試了幾次,沒有任何問題,它基本上將對象(汽車)數組中的信息放到html上。 iNLarr是一組函數。當我嘗試這段代碼時,我回到了Red,因爲它是未定義的,請注意它是Red不是紅色,這意味着它是對象值之一,而不是DOM函數。

每個對象都是具有名稱,價格和顏色的關聯數組。

另一個問題,假設有人幫助我得到這個工作,你認爲可以添加更多的if語句,以便可以添加或減少cars變量。

編輯:

好吧,我改變了底部一段代碼:

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

我希望,而不是顯示的名字,我可以顯示出來,只有當有東西來顯示。基本上這些名字都用div來表示,我現在有20次潛水並且只有三個名字。我該如何做到這一點,因爲當數組中沒有對象時,只有三個被顯示,剩下的被清空。

+0

定義了「紅色」在哪裏? – mgamba 2014-09-21 14:32:41

+0

紅色未定義,它是數組中對象的值之一。基本上我想從$ cars數組中排序所有紅色的汽車。 – Tom 2014-09-21 14:35:20

+0

什麼是test.php的JSON輸出? – krisdyson 2014-09-21 14:37:24

回答

1

RY下面的代碼中的變化:

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 */ 

}); 

如果不工作,確切說出了問題。

+0

我會盡力謝謝。 – Tom 2014-09-21 15:31:58

+0

實際上我認爲這只是我沒有把「」放在紅色周圍,但謝謝。 – Tom 2014-09-21 15:39:43

+0

不,它出錯了。我認爲它工作,現在我遇到了一個問題,它說汽車不支持.sort方法或功能。 – Tom 2014-09-21 16:04:19