未捕获的SyntaxError:意外的数字

时间:2014-09-29 14:52:35

标签: javascript

解决方案:我意识到当前测试环境的区域设置被设置为土耳其语,并且它使用逗号作为小数符号。在我的本地,它被设置为英国,这就是代码在我的本地工作并且在测试中不起作用的原因。我想我会事先用点替换所有逗号。感谢所有的答复。

我正在尝试使用以下数据填充条形图:

var oneToTen = [0,1,2,3,4,5,6,7,8,9,10];
var ticks = [[0, 'Atmosfer'],[1, 'Servis'],[2, 'Yemeklerimiz']];
var labels = ['Atmosfer','Servis','Yemeklerimiz'];
var mainQuest_d1 = 8,16666666666667;
var mainQuest_d2 = 7,95833333333333;
var mainQuest_d3 = 8,125;
var d_main_quest_bar = [[0, 8,16666666666667],[1, 7,95833333333333],[2, 8,125]];

我收到此错误:

  

未捕获的SyntaxError:意外的数字

我看不出上面的代码有什么问题。它在localhost中工作正常,但是当我将它发布到测试服务器时,它会出现此错误。

完整的代码尚未由Razor呈现:

int i = 0;
            int j = 0;
            int m = 0;
            @Html.Raw("var oneToTen = [0,1,2,3,4,5,6,7,8,9,10];");
            @Html.Raw("var ticks = [");

            if (Model.MainQuestionsRatingList != null)
            {
                foreach (var item in Model.MainQuestionsRatingList)
                {
                    j++;
                    @Html.Raw("["+(j-1)+", '"+item.QuestionText+"']")
                    if (j != Model.MainQuestionsRatingList.Count) { @Html.Raw(","); }
                }
            }
            @Html.Raw("];");

            @Html.Raw("var labels = [");

            if (Model.MainQuestionsRatingList != null)
            {
                foreach (var item in Model.MainQuestionsRatingList)
                {
                    m++;
                    @Html.Raw("'"+item.QuestionText+"'")
                    if (m != Model.MainQuestionsRatingList.Count) { @Html.Raw(","); }
                }
            }

            @Html.Raw("];");

            if (Model.MainQuestionsRatingList != null)
            {
                foreach (var item in Model.MainQuestionsRatingList)
                {
                   i++;
                  @Html.Raw("var mainQuest_d" + i + " = " + item.Avg + ";");

                }
            }


            i = 0;
              @Html.Raw("var d_main_quest_bar = [");
            if (Model.MainQuestionsRatingList != null)
            {
                foreach (var item in Model.MainQuestionsRatingList)
                {
                    i++;
                    @Html.Raw("[" + (i-1) + ", "+item.Avg+"]");
                    if (i != Model.MainQuestionsRatingList.Count) { @Html.Raw(","); }
                }
            }
              @Html.Raw("];");
        }

        data.push({
                label: labels,
                data: d_main_quest_bar,
                bars: {
                    show: true,
                    barWidth: 0.2,
                    order: 1
                }
            });

编辑:我在本地运行相同的代码,并发现逗号会自动被点替换,这就是为什么它在我的本地工作为@ T.J。克劳德说。但是当我在测试中运行它时,它不会发生。这怎么可能?

4 个答案:

答案 0 :(得分:4)

您无法在JavaScript源代码中使用本地化的小数点分隔符。您必须使用.

var mainQuest_d1 = 8.16666666666667;
var mainQuest_d2 = 7.95833333333333;
var mainQuest_d3 = 8.125;

请参阅What is the decimal separator symbol in JavaScript?

很明显,,已经具有另一种含义。你期望数组有多少个元素

[0, 8,16666666666667]

包含?

答案 1 :(得分:2)

您不应在数字中使用逗号。请改用小数位。逗号是为其他用途保留的特殊字符,例如数组中的分隔符和函数参数。

例如:

8,16666666666667

应该是

8.16666666666667

您有几个实例,所以这里是正确编写的完整代码:

var oneToTen = [0,1,2,3,4,5,6,7,8,9,10];
var ticks = [[0, 'Atmosfer'],[1, 'Servis'],[2, 'Yemeklerimiz']];
var labels = ['Atmosfer','Servis','Yemeklerimiz'];
var mainQuest_d1 = 8.16666666666667;
var mainQuest_d2 = 7.95833333333333;
var mainQuest_d3 = 8.125;
var d_main_quest_bar = [[0, 8.16666666666667],[1, 7.95833333333333],[2, 8.125]];

(最后4行共有6个变化)

答案 2 :(得分:1)

你不应该使用逗号来表示整数:

<script type="text/javascript">
var oneToTen = [0,1,2,3,4,5,6,7,8,9,10];
var ticks = [[0, 'Atmosfer'],[1, 'Servis'],[2, 'Yemeklerimiz']];
var labels = ['Atmosfer','Servis','Yemeklerimiz'];
var mainQuest_d1 = 8.16666666666667;
var mainQuest_d2 = 7.95833333333333;
var mainQuest_d3 = 8.125;
var d_main_quest_bar = [[0, 8.16666666666667],[1, 7.95833333333333],[2, 8.125]];
</script>

来源:http://en.wikipedia.org/wiki/JavaScript_syntax#Number

答案 3 :(得分:0)

这是不正确的:

var mainQuest_d1 = 8,16666666666667;
var mainQuest_d2 = 7,95833333333333;
var mainQuest_d3 = 8,125;

你不能在那里使用逗号。