我想让我的条形图更动态一点,这样用户就可以改变输入的值的数量。我使用的php变量被转换成JQuery变量。现在图表工作得很好,但当我尝试添加if语句,如果条形数大于或等于值的数量,图表就消失了。有人知道我哪里出错了吗?
<script>
window.onload = function (){
var pValue1 = <?php echo $pValue1;?>;
var pValue2 = <?php echo $pValue2;?>;
var pValue3 = <?php echo $pValue3;?>;
var pValue4 = <?php echo $pValue4;?>;
var pValue5 = <?php echo $pValue5;?>;
var NoOfBars = <?php echo $NoOfBars;?>;
var bar = new RGraph.Bar({
id:'cvs1',
data:
if (NoOfBars >= 1){
[pValue1],
}
if (NoOfBars >= 2){
[pValue1, pValue2],
}
if (NoOfBars >= 3){
[pValue1, pValue2, pValue3],
}
if (NoOfBars >= 4){
[pValue1, pValue2, pValue3, pValue4],
}
if (NoOfBars >= 5){
[pValue1, pValue2, pValue3, pValue4, pValue5],
}
options: {
backgroundGridDashed: true,
labels: ['Mal', 'Barry', 'Gary', 'Neil', 'Kim', 'Pete', 'Lou', 'Fred', 'Jobe'],
title: 'Title of Chart',
strokestyle: 'rgba(0,0,0,0)',
textAccessible: true
}
}).draw();
};
</script>
所以你要做的是分配给JSON,但你需要做的是将其分配给一个变量,因为你有很多条件。
我为您创建了一个变量,然后将其赋值。(我根据你的趋势将其默认为空数组。然后我会在RGraph的JSON中分配它。酒吧
<script>
window.onload = function (){
var pValue1 = <?php echo $pValue1;?>;
var pValue2 = <?php echo $pValue2;?>;
var pValue3 = <?php echo $pValue3;?>;
var pValue4 = <?php echo $pValue4;?>;
var pValue5 = <?php echo $pValue5;?>;
var NoOfBars = <?php echo $NoOfBars;?>;
var barValue = []; // <-- new variable.
if (NoOfBars >= 1){
barValue = [pValue1];
}
if (NoOfBars >= 2){
barValue = [pValue1, pValue2];
}
if (NoOfBars >= 3){
barValue = [pValue1, pValue2, pValue3];
}
if (NoOfBars >= 4){
barValue = [pValue1, pValue2, pValue3, pValue4];
}
if (NoOfBars >= 5){
barValue = [pValue1, pValue2, pValue3, pValue4, pValue5];
}
var bar = new RGraph.Bar({
id:'cvs1',
data: barValue, // <-- assignment
options: {
backgroundGridDashed: true,
labels: ['Mal', 'Barry', 'Gary', 'Neil', 'Kim', 'Pete', 'Lou', 'Fred', 'Jobe'],
title: 'Title of Chart',
strokestyle: 'rgba(0,0,0,0)',
textAccessible: true
}
}).draw();
};
</script>
这就是NOT如何有条件地构建数组。if
不是一个函数,它没有返回值,你不能将if
赋值给一个变量。
你的代码应该是:
var foo = []; // empty array
if ( ... something ...) {
foo.push(new value);
}
if (... something else ) {
foo.push (new value);
}
doSomething(foo);