<html>
<head>
<title> Colors </title>
</head>
<body>
<script type="text/javascript">
var a = parseInt(prompt("Enter R"));
var b = parseInt(prompt("Enter G"));
var c = parseInt(prompt("Enter B"));
document.body.style.backgroundColor=rgb(a,b,c);
</script>
</body>
</html>
为什么背景颜色不会根据RGB值变化?我做错了什么?
答案 0 :(得分:41)
您需要使用引号:
document.body.style.backgroundColor = 'rgb(' + a + ',' + b + ',' + c + ')';
或者:
document.body.style.backgroundColor = 'rgb(' + [a,b,c].join(',') + ')';
未加引号 JavaScript将变量作为参数a
,b
和c
传递给名为rgb()
的未定义函数。在您设置CSS属性时,您需要传递一个字符串,因此需要引用。
哦,而且你还在使用parseInt()
,但
var a = parseInt(prompt("Enter R"), 10) || 255,
b = parseInt(prompt("Enter G"), 10) || 255,
c = parseInt(prompt("Enter B"), 10) || 255;
JS Fiddle demo(在演示中我使用105
只是为了清除默认情况下,如果使用 cancel 按钮,则会使用默认值。
如果有人点击&#39;取消&#39;在提示符上,您可能希望提供一个默认参数以确保传递实际的颜色值,因为 cancel 否则,我认为,评估为false
(我&#39; m假设你更喜欢255
,但显然要适应口味)。
当然,您也可以简单地定义一个函数:
function rgb(r,g,b) {
return 'rgb(' + [(r||0),(g||0),(b||0)].join(',') + ')';
}
var a = parseInt(prompt("Enter R"), 10),
b = parseInt(prompt("Enter G"), 10),
c = parseInt(prompt("Enter B"), 10);
document.body.style.backgroundColor = rgb(a,b,c);
这种方法具有允许使用自定义默认值的(可能是似是而非的)好处:
function rgb(r,g,b, def) {
def = parseInt(def, 10) || 0;
return 'rgb(' + [(r||def),(g||def),(b||def)].join(',') + ')';
}
var a = parseInt(prompt("Enter R"), 10),
b = parseInt(prompt("Enter G"), 10),
c = parseInt(prompt("Enter B"), 10);
document.body.style.backgroundColor = rgb(a,b,c,40);
参考文献:
答案 1 :(得分:1)
在值
周围使用引号document.body.style.backgroundColor="rgb(" + a + "," + b + "," + c + ")";
答案 2 :(得分:1)
rgb需要用引号:
<html>
<head>
<title> Colors </title>
</head>
<body>
<script type="text/javascript">
var a = parseInt(prompt("Enter R"));
var b = parseInt(prompt("Enter G"));
var c = parseInt(prompt("Enter B"));
document.body.style.backgroundColor='rgb(' + a + ',' + b + ',' + c + ')';
</script>
</body>
</html>
jsFiddle http://jsfiddle.net/pduQ6/
答案 3 :(得分:0)
您没有名为rgb(...)
我认为你的意思是:
document.body.style.backgroundColor = "rgb(" + a + "," + b + "," + c + ");";
答案 4 :(得分:0)
问题是颜色需要是一个字符串:
var a = parseInt(prompt("Enter R"),10);
var b = parseInt(prompt("Enter G"),10);
var c = parseInt(prompt("Enter B"),10);
document.body.style.backgroundColor = "rgb(" + [a,b,c].join() + ")";