javascript - 为什么 backgroundColor=rgb(a,b,c) 不起作用?

标签 javascript html

<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 + ')';

JS Fiddle demo .

或者:

document.body.style.backgroundColor = 'rgb(' + [a,b,c].join(',') + ')';

JS Fiddle demo .

Unquoted JavaScript 将变量作为参数传递给未定义的 abc名为 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);

JS Fiddle demo

并且这种方法具有允许使用自定义默认值的(也许似是而非的)好处:

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 Fiddle demo

引用资料:

关于javascript - 为什么 backgroundColor=rgb(a,b,c) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323082/

相关文章:

javascript - 如何使用 framework7 在同一个 html 页面中包含不同的 View ?

javascript - 如何将焦点设置到 Django 表单元素的 CharField

html - CSS 网页宽度、导航栏居中和小部件环绕居中

javascript - 滚动到元素

html - Bootstrap 中图像网格的问题

javascript - 从父目录 react 导入

javascript - 如何决出剪刀石头布的胜负?

javascript - 如何使用 asp.net MVC 在挖空组件中隐藏基于角色的部分

c# - 要在 HTML 控件中显示的 XML 元素中的空格

html - 具有可变文本长度对齐和居中问题的 Div