我有以下代码可以正常工作,
Morris.Bar({
element: 'barchart',
axes: true,
data: [ json.bar.bar1 ],
xkey: 'x',
ykeys: ['y', 'z', 'a'],
labels: ['Facebook', 'LinkedIn', 'Google+'],
barColors: ['#707f9b', '#455064', '#242d3c']
});
THE JSON
{
"bar" :
{
"bar1" : {
"x" : "2013 Q1",
"y" : "9",
"z" : "6",
"a" : "8"
},
"bar2" : {
"x" : "2013 Q2",
"y" : "5",
"z" : "7",
"a" : "3"
},
"bar3" : {
"x" : "2013 Q3",
"y" : "8",
"z" : "9",
"a" : "6"
},
"bar4" : {
"x" : "2013 Q4",
"y" : "7",
"z" : "9",
"a" : "8"
}
}
}
然而,当我嵌入循环时,我在Dreamweaver中显示语法错误。此外,输出不会在网页上呈现。
Morris.Bar({
element: 'barchart',
axes: true,
data: [
for(i=1;i<=4;i++)
{
json.bar.bar + i + ','
}
],
xkey: 'x',
ykeys: ['y', 'z', 'a'],
labels: ['Facebook', 'LinkedIn', 'Google+'],
barColors: ['#707f9b', '#455064', '#242d3c']
});
总的想法是让它看起来像这样
Morris.Bar({
element: 'barchart',
axes: true,
data: [ json.bar.bar1,
json.bar.bar2,
json.bar.bar3,
json.bar.bar4 ],
xkey: 'x',
ykeys: ['y', 'z', 'a'],
labels: ['Facebook', 'LinkedIn', 'Google+'],
barColors: ['#707f9b', '#455064', '#242d3c']
});
答案 0 :(得分:3)
尝试类似:
data: (function() {
var newBar = [];
for (i = 1; i <= 4; i++) {
newBar.push(json.bar["bar"+i]); //for the current structure of your json.bar object
}
return newBar
})();
您可能希望使用数组json.bar
作为条形值。然后你可以改为newBar.push(json.bar[i])
(注意i
值,但第一个元素的索引是0)
答案 1 :(得分:1)
你不能在数组中使用for循环。
你在外面做。
或者在ECMAScript5中,您可以使用:
data: Object.keys(json.bar).map(function(key) {return json.bar[key]}),