我正在使用一组对象来随机打印画布中的项目。每个对象应该有不同的随机颜色,但我编写代码的方式每个对象都得到相同的颜色。
var arrayOfObjects = [
{x: 1, y: 5, r: 10, color: pickColor}, //gets random color
{x: 2, y: 6, r: 10, color: pickColor} // should get a different color
//and so on...
];
我试图将pickColor
变量替换为要在每个对象内执行的函数,以便它们都获得不同的颜色,但我似乎无法使用此值来选择颜色数组中的颜色
这显然不起作用:
{x: 1, y: 5, r: 10, color: colorList[parseInt(Math.random() * colorList.length)]},
编辑:这段代码有效,问题来自一条显然不相关的行,调试工具没有提示。
谢谢你的回答
答案 0 :(得分:0)
使var colorList = ["#E57373", "#F06292", "#BA68C8", "#9575CD", "#7986CB", "#64B5F6", "#DCE775", "#AED581", "#81C784", "#FFD54F"];
function pickColor() {
var randIndex = parseInt(Math.random() * colorList.length);
return colorList[randIndex];
}
var arrayOfObjects = [
{x: 1, y: 5, r: 10, color: pickColor()},
{x: 2, y: 6, r: 10, color: pickColor()},
//and so on...
];
成为一个函数并多次调用它:
var lastId = null;
function toggle_visibility(id) {
if (lastId && id != lastId) {
var lastEl = document.getElementById(lastId);
lastEl.style.display = 'none';
}
lastId = id;
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
效果与第二个片段中的效果相同,除非您不必为每个对象重复自己。