0

次のコード行で予期しない識別子エラーが発生します。var player[data[x].split("|",1)] = data[x].split("|")[1];

応答データの形式は次のとおりです。

Mike Trout|0\nRyan Braun|0\n...

完全な JS 関数は次のとおりです。

function updateChance(round, pickNumber)
{
    $.ajax({
            type: "GET",
            data: {round: round, pickNumber: pickNumber},
            url: "./lib/updatechance.php",
            dataType: "html",
            async: false,
            success: function(response) 
            {
                var data = response.split("\n");
                for (var x=0; data.length; x++)
                {
                    var player[data[x].split("|",1)] = data[x].split("|")[1];
                }

                for (var r = 1; r < $('#battersTable').rows.length; r++){
                    //do something with player

                }
            }
    });
}
4

4 に答える 4

2

ここで何をしたか見てください

.split("|",1)  //wrong

.split("|")[1]  //right

もう1つの問題はvar、ブラケット表記にあり、発生しません。

var player[data[x].split("|",1)]  <-- var, should not be there

また、for ループにはチェックがないため、無限に実行されます。

for (var x=0; data.length; x++)  <-- data.length what?

なぜ2回に分けるのですか?2 倍の努力を 1 回で

for (var x=0; x<data.length; x++) {
    var info = data[x].split("|");
    player[info[0]] = info[1];
}

がグローバルに定義されていない場合playerは、ループの前に定義する必要があります。

于 2013-01-30T20:16:01.043 に答える
1

変数を宣言する同じステートメントでオブジェクト インデクサーにアクセスすることはできません。また、このsplit関数は引数を 1 つだけ取り、インデックス可能な配列を返します。したがって、この:

for (var x=0; data.length; x++) {
   var player[data[x].split("|",1)] = data[x].split("|")[1];
}

次のようにする必要があります。

var player = {};
for (var x=0; x < data.length; x++) {
   var value = data[x].split("|")[1];
   player[value] = value;
}

また、分割操作の結果を中間変数に格納し、最後にループがクラッシュする原因となるループ構文の問題を修正しても、構文エラーがコードの実行を妨げていませんでした。

全体として、かなりの数の構文の問題があったため、jshintなどのリンターを使用してコードを実行することをお勧めします。問題の詳細なエラー レポートが表示されます。

于 2013-01-30T20:16:55.147 に答える
1

var player[data[x].split("|",1)] = data[x].split("|")[1];

キーワードvarが意味不明。ローカル変数を宣言するためだけに必要です。ここに続くのは代わりに単なる代入です。

他にも問題があります(他の回答とコメントを参照)が、これは実際にはブラウザが報告している構文エラーです。

于 2013-01-30T20:20:07.700 に答える
1

私はあなたがこれをしたいと思っています:

     var player = {};
     for (var x=0; data.length; x++) {
        var flds = data[x].split("|");
        player[flds[0]] = flds[1];
     }
于 2013-01-30T20:20:09.640 に答える