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

另一个问题,你有var括号符号,不会发生。

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

并且 for 循环缺少检查,因此将无限运行。

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

为什么要分两次?两次努力,一次做

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函数也只接受一个参数并返回一个可索引数组。所以这:

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 之类的 linter 运行您的代码。它将为您提供有关问题的详细错误报告。

于 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 回答