【发布时间】:2014-09-29 14:52:34
【问题描述】:
解决方案:我意识到当前测试环境的区域设置设置为土耳其语,并且使用逗号作为十进制符号。在我的本地,它设置为英国,这就是代码在我的本地工作并且在测试中不起作用的原因。我想我会事先用点替换所有逗号。感谢所有的答复。
我正在尝试用以下数据填充条形图:
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]];
我得到这个错误:
Uncaught SyntaxError: Unexpected number
我看不出上面的代码有什么问题。它在 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.克劳德说。但是当我在测试中运行它时它不会发生。这怎么可能?
【问题讨论】:
-
小数点分隔符是点 (.) 符号而不是逗号 (,)
-
JavaScript 在数字中使用
.而不是,! -
请注意,
var foo = (8,125)不会导致错误,因为括号分隔表达式并且逗号运算符起作用(因此foo最终将是125)。因此,始终正确使用小数分隔符非常重要。 -
Downvoters:这并不是一个看起来很愚蠢的错误,在许多文化中,
,,而不是.,是小数点分隔符(而.是千位分隔符——非常有趣)。 -
@BurakKarakuş:我非常怀疑它是否适用于
localhost。任何在代码中将8,7读取为十进制数字的 JavaScript 引擎都会以一种非常戏剧性的方式违反规范。
标签: javascript