2012-09-20 18 views
0

我從一個WordPress的網站上將一個數組引入到jQuery中。它是一個多維陣列看起來像這樣後我轉換成$ jqueryArray(來自的console.log截取)jQuery多維對象數組未來定義

2:對象{最大= 「10" ,最小=」 500 「數=」 2「}

3:Object {max =「15」,min =「750」,number =「3」}

4:Object {max =「8」,min =「400」,number =「4」}

5:對象{最大= 「12" ,最小=」 700 「數=」 10 「}

1:對象{最大=」 10" ,最小= 「500」,數=「1 「}

的代碼如下:

jQuery(function() { 
    jQuery('.wpsc_select_variation').change(function(){ 

     var arrayFromPHP = <?php echo json_encode($alt_tables) ?>; 
     var $jqueryArray = {}; 

      jQuery.each(arrayFromPHP, function (key, value) { 
       $jqueryArray[key] = {}; 
       $jqueryArray[key] = value; 
      }); 
     console.log($jqueryArray); 

     // clears the div that we will type the Table Minimum order too 
     jQuery('#table-details').empty(); 
     var $selectedName; 

     // returns an integer, specific to the Table # selected 
     $selectedName = jQuery(this).find(':selected').text().replace('Table ', ''); 

     console.log($jqueryArray.$selectedName); 

     var $newDetails = 'Table minimum order: '; 
     jQuery('#table-details').append($newDetails); 
    }); 

}); 

出於某種原因,$ jqueryArray $ selectedName是不確定的。我可以看到,$ jqueryArray有5個鍵,編號爲1到5,但即使當我嘗試console.log($ jqueryArray.1);我弄不明白。我似乎無法弄清楚如何從數組中調用數字。基本上,我想

$ jqueryArray [$ selectedName] [分鐘] 我試過$ jqueryArray [$ selectedName]中的console.log和接收不確定以及

我加了的jsfiddle http://jsfiddle.net/kzuyd/14/

我拿了<?php echo json_encode($alt_tables) ?>,並將其作爲變量添加,因爲php在jsfiddle中不起作用。希望它的工作原理相同..

+0

你不加'$ selectedName'到'$ jqueryArray' ... – elclanrs

+0

我會怎麼做呢? $ selectedName是一個整數,像1或2,$ jqueryArray有整數1到5作爲鍵 –

+0

我試過console.log($ jqueryArray [「1」]);和console.log($ jqueryArray [1]);並且都返回undefined –

回答

1

Updated jsFiddle

jQuery(function() { 
    var arrayFromPHP = '{"1 ":{"note":null,"max":" 10","min":" 500 ","number":"1 "}," 2 ":{"note":null,"max":" 10","min":" 500 ","number":" 2 "}," 3 ":{"note":null,"max":" 15","min":" 750 ","number":" 3 "}," 4 ":{"note":null,"max":" 8","min":" 400 ","number":" 4 "}," 5 ":{"note":null,"max":" 12","min":" 700 ","number":" 5 "}}'; 

    var $jqueryArray = {}; 

    // you must parse `arrayFromPHP`, it's not actually an array now 
    // it's a JSON string 
    jQuery.each(JSON.parse(arrayFromPHP), function(key, value) { 

     // your keys have spaces at the end of them e.g. "1 " 
     // trim them first 
     $jqueryArray['Table' + key.trim()] = {}; 
     $jqueryArray['Table' + key.trim()] = value; 
    }); 

    jQuery('.wpsc_select_variation').change(function() { 

     jQuery('#table-details').empty(); 
     jQuery('#table-minimum').empty(); 
     var $selectedName; 

     $selectedName = jQuery(this) 
      .find("option:selected") 
      .text() 
      .replace(/\s/g, ''); 
      // to replace all spaces, use the regex shown 

     var $newDetails = 'The selected name: ' + $selectedName + ''; 
     jQuery('#table-details').append($newDetails); 

     // use obj["min"] to get the minimum 
     var $tableMin = '<br /><br />The table minimum is: ' + 
         $jqueryArray[$selectedName]["min"] + ''; 
     jQuery('#table-minimum').append($tableMin); 
    }); 

});​ 
+0

問題是一些變量有多餘空格的問題?無論如何,謝謝你的幫助!我在這個上花了幾個小時 –

+0

有幾個問題,主要是我在上面的代碼中評論過的。如果我必須責怪一個問題,雖然它會是你的'.each()'循環,因爲你的'數組'變量實際上只是一個字符串,它[它反覆遍歷它的字符](http://jsfiddle.net/kzuyd/17 /)。 – nbrooks

+0

這個問題只是在小提琴中。原始代碼是var arrayFromPHP = <?php echo json_encode($ alt_tables)?>;但我不能直接把它帶入小提琴。很高興你注意到它並修復它,再次感謝! –