Javascript三进制不能在循环中工作
Javascript ternary not working in loop
我有以下循环:
while(i <= num_loops)
{
if(cat_ids.indexOf(parseInt(i, 10)) != -1)
{
catsPie.addData({
value: cat_names[cat_ids.indexOf(parseInt(i, 10))],
color: "" + (i==0) ? '#150faf' : randomColor({luminosity: 'dark'}),
highlight: "#B48EAD",
label: "" + cat_names_string[cat_ids.indexOf(parseInt(i, 10))]
});
}
i++;
}
这是一个动态的解决方案,用于在chart .js中向饼状图添加新数据。除了一件事,一切都如预期的那样。在第7行(颜色)中,我想只在== 0时将颜色设置为#150faf(蓝色)。在其他情况下,它应该等于randomColor的返回值。然而,无论如何,它总是返回#150faf。
如果我去掉这个三元部分就变成这样:
color: "" + randomColor({luminosity: 'dark'}),
一切工作,但这不是我想要的。第一个数据需要是#150faf。
我如何修复它?
三元运算符"" + (i==0)
之前的表达式计算结果为字符串。JavaScript中的非空字符串是true
——甚至字符串"false"
也有一个布尔值true
!你要做的是计算i == 0
产生的布尔值。不需要将其与空字符串连接。
尝试替换这个
color: "" + (i==0) ? '#150faf' : randomColor({luminosity: 'dark'}),
color: i==0 ? '#150faf' : randomColor({luminosity: 'dark'}),
试试这个:
var num_loops = 10;
var i = 0;
while (i <= num_loops) {
var color = (i === 0) ? '#150faf' : '#ffffff';
alert(color);
i++;
}
把这一行改成…
color: "" + (i == 0 ? '#150faf' : randomColor({luminosity: 'dark'})),
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- AngularJS循环不工作
- For循环在Javascript函数中无法正常工作
- for循环在node.js中的工作方式
- 循环内部的递归函数未按预期工作
- mongoose.js Model.remove在循环中只能工作一次
- JavaScript while循环没有'不能在有条件的情况下工作
- 当if条件被添加到循环中时,Javascript函数将停止工作
- 让循环在我的脚本中工作
- 循环不'不能在“onreadystatechange”中工作
- 如何使此循环工作?它's返回未定义的语言js
- 为..在 Chrome 中循环工作,但不在 IE 中
- JQuery循环工作不正常
- 对象数组中的数据清理:无法进行循环工作
- Javascript倒计时不为php循环工作
- 渐明,淡出DIV上循环工作良好-但不显示第一个DIV
- 我的Javascript for循环工作在除了一个子数组以外的所有子数组上
- 为什么不't this For Canvas中的循环工作
- while循环工作时,页面没有响应
- Javascript循环:for循环工作,但不能映射