Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript更改背景onclick的rgb值_Javascript_Background Color - Fatal编程技术网

使用javascript更改背景onclick的rgb值

使用javascript更改背景onclick的rgb值,javascript,background-color,Javascript,Background Color,我试图实现一个非常简单的JavaScript程序:每次单击按钮时,背景颜色的RGB值都是随机的 下面是Javascript: function change() { var x = Math.floor(Math.random() * 256); // range is 0-255 var y = Math.floor(Math.random() * 256); var z = Math.floor(Math.random() * 256); var thergb

我试图实现一个非常简单的JavaScript程序:每次单击按钮时,背景颜色的RGB值都是随机的

下面是Javascript:

function change() {
    var x = Math.floor(Math.random() * 256); // range is 0-255
    var y = Math.floor(Math.random() * 256);
    var z = Math.floor(Math.random() * 256);
    var thergb = "'rgb(" + x + "," + y + "," + z + ")'"; 
    console.log(thergb);
    document.body.style.background=thergb;
}
我很确定问题在于如何将
thergb
变量组合在一起,但是控制台中没有错误,所以我不太确定。我记录控制台只是为了确保它给我一个实际的随机rgb,它是


下面是完整的JSFIDLE:

rgb()值的CSS语法不包含单引号

将“rgb(x,y,z)”更改为
rgb(x,y,z)

两件事:

  • 您需要为fiddle服务器放置代码的位置选择一个“nowrap”选项
  • 您需要去掉“rgb()”表达式周围的单引号字符

        var thergb = "rgb(" + x + "," + y + "," + z + ")"; 
    
  • 就我个人而言,我会设置“backgroundColor”而不仅仅是“backgroundColor”,但设置“backgroundColor”是可行的(至少在Firefox中是这样)


    您已将其包装在
    '
    中。。为什么?

    如果你把它去掉,它就会工作

    var thergb = "rgb(" + x + "," + y + "," + z + ")"; 
    
    演示

    (您还需要在
    head
    标记中定义
    change
    函数,而不是在
    onLoad
    事件中定义功能。)

    工作小提琴(刚刚更正了您的代码):

    CSS颜色作为rgb的语法是
    rgb(r,g,b)
    (没有额外的撇号“
    ”)=不是
    “rgb(r,g,b)


    PS:如果这对您不起作用,您将在声明此javascript函数之前调用它。

    控制台中出现错误-“更改未定义”;)(在你的小提琴中)顺便说一句,你有一个额外的“”。我包装它是因为如果我只做
    document.body.style.background=“rgb(4,5,23)”
    例如,它只与引号一起工作。为什么我现在不需要它们?@user1925805您需要在它周围加上一种引号,表示它是一个字符串。。但是您同时使用了
    引号。我明白了,我的错误是认为我需要复制变量中
    =
    之外的所有内容,包括引号。
    function change() {
        var x = Math.floor(Math.random() * 256); // range is 0-255
        var y = Math.floor(Math.random() * 256);
        var z = Math.floor(Math.random() * 256);
        var thergb = "rgb(" + x + "," + y + "," + z + ")"; 
        console.log(thergb);
        document.body.style.background=thergb;
    }