0

私はワードプレスのウェブサイトで、phpからjqueryに配列を持ってきています。$ jqueryArray(console.logから取得)に変換すると、次のような多次元配列になります。

2:オブジェクト{max = "10"、min = "500"、number = "2"}

3:オブジェクト{max = "15"、min = "750"、number = "3"}

4:オブジェクト{max = "8"、min = "400"、number = "4"}

5:オブジェクト{max = "12"、min = "700"、number = "5"}

1:オブジェクト{max = "10"、min = "500"、number = "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には1から5までの番号が付けられた5つのキーがあることがわかりますが、console.log($ jqueryArray.1);を試しても 未定義になります。配列から番号を呼び出す方法がわからないようです。基本的に欲しい

$ jqueryArray [$ selectedName][min]console.logで$jqueryArray[$ selectedName]を試しましたが、未定義も受け取りました

jsfiddleを追加しましたhttp://jsfiddle.net/kzuyd/14/

<?php echo json_encode($alt_tables) ?>phpはjsfiddleで機能しないため、を取得して変数として追加しました。うまくいけば、それは同じように動作します。

4

1 に答える 1

1

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

});​
于 2012-09-20T02:04:03.063 に答える