我必须忽略一些东西,但下面的代码对我不起作用(抱歉这么基本的东西):
(function(){
document.body.addEventListener("click", function(){
var test = "rgb(" + parseInt((9.3 * Math.random())) + "," + parseInt((9.1 * Math.random())) + "," + parseInt((102 * Math.random())) + ");";
this.style.backgroundColor = test;
console.log(test); // corretly outputs rgb(12, 20, 30)
}, false);
})();
使用字符串作为值并将变量分配给包含rgb值的字符串也可以,但使用test
作为值不起作用,并且不显示任何控制台错误。这是为什么?
答案 0 :(得分:2)
您无需在结尾处传递;
var test =
"rgb("
+ parseInt((9.3 * Math.random()))
+ ","
+ parseInt((9.1 * Math.random()))
+ ","
+ parseInt((102 * Math.random())) + ")";
从;
+ ");"
答案 1 :(得分:2)
它没有正确输出rgb(12, 20, 30)
,而是输出rgb(12, 20, 30);
您正在设置
this.style.backgroundColor = "rgb(12, 20, 30);";
有一个分号导致该值无效。您需要从字符串中删除分号
+ ");";
^
应该是
+ ")";
答案 2 :(得分:0)
此外,您的颜色范围不足以发现差异,12,30和7看起来相似。试试这个:
(function () {
document.addEventListener('click', function () {
var r = Math.round(Math.random() * 255),
g = Math.round(Math.random() * 255),
b = Math.round(Math.random() * 255);
document.body.style.backgroundColor = 'rgb(' + r + ', ' + g + ', ' + b + ')';
});
})();
这是一个工作小提琴: