您需要使用引号:
document.body.style.backgroundColor = 'rgb(' + a + ',' + b + ',' + c + ')';
JS 小提琴演示。
或者:
document.body.style.backgroundColor = 'rgb(' + [a,b,c].join(',') + ')';
JS 小提琴演示。
不带引号的 JavaScript 将变量作为参数传递给一个未定义的函数a
,称为. 当您设置 CSS 属性时,您需要传递一个字符串,因此需要quoting。b
c
rgb()
哦,而且你正在使用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 演示(在我使用的演示中105
,很明显,如果使用cancel按钮,则使用默认值)。
如果有人在提示符下点击“取消”,您可能需要提供默认参数以确保传递实际的颜色值,因为cancel否则,我认为,评估为false
(我假设您更喜欢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);
JS 小提琴演示
这种方法具有允许使用自定义默认值的(也许是似是而非的)好处:
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);
JS 小提琴演示
参考: