bgcolor vs background-color vs backgroundColor

Jac*_*own 2 javascript

我试图在javascript中制作一个"闪光灯",我发现了一些代码可以在互联网上为我做这个...但他们使用了bgcolor,我觉得我应该是正确但代码只有当我离开它时才有效... bgcolor ...所以你知道我的意思在这里是原始的:

<html><head>
<title>Strobe</title>

<script>

function toggleBgColor()
{
  document.bgColor = document.bgColor == '#ffffff' ? '#000000' : '#ffffff';

  setTimeout('toggleBgColor()', 70); //in milliseconds
}
</script>
</head>

<body onLoad='toggleBgColor();'>
</body></html>
Run Code Online (Sandbox Code Playgroud)



这是我的变化:


<html><head>
<title>Strobe</title>

<script>

function toggleBgColor()
{
  document.body.style.background-color = document.body.style.background-color == '#ffffff' ? '#000000' : '#ffffff';

  setTimeout('toggleBgColor()', 70); //in milliseconds
}
</script>
</head>

<body onLoad='toggleBgColor();'>
</body></html>
Run Code Online (Sandbox Code Playgroud)



我也尝试将document.body.style.background-color更改为document.body.style.background和document.body.style.backgroundColor ...它们都没有工作......我做错了什么?

T.J*_*der 8

document.body.style.background-color是一个无效的标识符(好吧,从技术上讲它是一个有效的标识符[ document.body.style.background],后跟一个运算符[ -],后跟另一个有效的标识符[ color],但你知道我的意思).请document.body.style.backgroundColor改用.如果其他事情是正确的,它确实有效.实例

你说过你已经尝试过了.我怀疑问题是你的代码在其他地方失败了.例如,您要比较'#ffffff':

document.body.style.backgroundColor = document.body.style.backgroundColor == '#ffffff' ? '#000000' : '#ffffff';
//                                                                        ^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

浏览器可能不会(可能不会)以您用于指定颜色的相同格式向您报告.该值将"white"在某些浏览器中返回,与rgb(255, 255, 255)其他浏览器一样,等等.因此即使背景颜色白色,比较也会经常失败.您必须处理这种复杂性,解析rgb和查找颜色名称等等. - 或者保持一个标志,如上例所示.


偏离主题:避免将字符串传入setTimeout; 相反,直接使用函数引用.在你的情况下:

setTimeout(toggleBgColor, 70); //in milliseconds
Run Code Online (Sandbox Code Playgroud)

注意没有引号,没有()(因为它们会调用函数;我们想要传入它的引用,而不是它的返回值).

如果传递参数(你不在那里,但只是为了完整性),你可以使用一个函数来做到这一点:

setTimeout(function() {
    doSomething("foo", "bar");
}, 70);
Run Code Online (Sandbox Code Playgroud)