解决方案:我意识到当前测试环境的区域设置被设置为土耳其语,并且它使用逗号作为小数符号。在我的本地,它被设置为英国,这就是代码在我的本地工作并且在测试中不起作用的原因。我想我会事先用点替换所有逗号。感谢所有的答复。
我正在尝试使用以下数据填充条形图:
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。克劳德说。但是当我在测试中运行它时,它不会发生。这怎么可能?
答案 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>
答案 3 :(得分:0)
这是不正确的:
var mainQuest_d1 = 8,16666666666667;
var mainQuest_d2 = 7,95833333333333;
var mainQuest_d3 = 8,125;
你不能在那里使用逗号。