将变量赋值给style属性的值不起作用

时间:2014-01-08 17:01:57

标签: javascript

我必须忽略一些东西,但下面的代码对我不起作用(抱歉这么基本的东西):

(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作为值不起作用,并且不显示任何控制台错误。这是为什么?

3 个答案:

答案 0 :(得分:2)

您无需在结尾处传递;

var test = 
    "rgb(" 
    + parseInt((9.3 * Math.random())) 
    + "," 
    + parseInt((9.1 * Math.random())) 
    + "," 
    + parseInt((102 * Math.random())) + ")";

;

中删除+ ");"

DEMO

答案 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 + ')';
    });
})();

这是一个工作小提琴:

http://jsfiddle.net/kmturley/7zNv6/