无法访问在For循环外声明的变量(JavaScript)

时间:2019-01-19 22:29:54

标签: javascript jquery arrays json chart.js

我只是无法访问Java语言中For循环外声明的变量。 For循环位于一个对象属性内,该对象属性位于函数内,并用于使用Chart.Js绘制图表。

有什么解决方法吗?

代码如下:

function chart1Update() {

var string = "['text1', 'text2', 'text3', 'text4']"

// bar chart data

var barData = {
labels : [
{% for item in string %} // <==== THE PROBLEM IS RIGHT HERE (string) <====
"{{ item }}",
{% endfor %}
],
datasets : [{
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
data : [
{% for item in ['1499', '1554', '1661', '1658'] %}
"{{ item }}",
{% endfor %}
]
}
]
}

1 个答案:

答案 0 :(得分:0)

{% for item in string %}看起来像javascript。那是红宝石之类的东西吗?它正在寻找使用变量所来自的任何非JavaScript语言定义的变量string,并且由于它无法访问任何javscript变量而对其进行了未定义或未初始化。

如果将其设为JS数组(而不是当前在字符串内部的数组声明),则可以直接分配js数组而无需循环,即

var string = ['text1', 'text2', 'text3', 'text4']; //no double quotes on the outside
var barData = {
labels : string,
//...

您的data循环起作用的原因是因为变量(即数组文字)是在标签内部定义的,因此它确实可以访问它。