<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值变化?我做错了什么??
最佳答案
您需要使用引号:
document.body.style.backgroundColor = 'rgb(' + a + ',' + b + ',' + c + ')';
或者:
document.body.style.backgroundColor = 'rgb(' + [a,b,c].join(',') + ')';
Unquoted JavaScript 将变量作为参数传递给未定义的 a
、b
和 c
名为 rgb()
的函数。当您设置 CSS 属性时,您需要传递一个字符串,因此需要引用。
哦,而且你正在使用 parseInt()
,它不需要传入基数,但它更好(也更容易避免问题)如果你这样做(radix 是预期的数字基数):
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 按钮则使用默认值)。
如果有人在提示中点击“取消”,您可能需要提供一个默认参数以确保传递实际的颜色值,因为 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);
并且这种方法具有允许使用自定义默认值的(也许似是而非的)好处:
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);
引用资料:
关于javascript - 为什么 backgroundColor=rgb(a,b,c) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323082/