Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 背景色与背景色与背景色_Javascript - Fatal编程技术网

Javascript 背景色与背景色与背景色

Javascript 背景色与背景色与背景色,javascript,Javascript,我正试图用javascript制作一个“闪光灯”,我在互联网上找到了一些可以为我做的代码…但是他们使用了bgcolor,我觉得我应该是合适的,但代码只有在我将其保留为bgcolor的情况下才能工作…所以你知道我的原意是: <html><head> <title>Strobe</title> <script> function toggleBgColor() { document.bgColor = document.bgColo

我正试图用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>

选通
函数toggleBgColor()
{
document.bgColor=document.bgColor='#ffffff'?'#000000':'#ffffff';
setTimeout('toggleBgColor()',70);//以毫秒为单位
}


这是我的变化:


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

选通
函数toggleBgColor()
{
document.body.style.background-color=document.body.style.background-color=='#ffffff'?'#000000':'#ffffff';
setTimeout('toggleBgColor()',70);//以毫秒为单位
}



我还尝试将document.body.style.background-color更改为document.body.style.backgroundColor和document.body.style.backgroundColor…它们都不起作用…我做错了什么?

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';
//                                                                        ^^^^^^^^^^^^
浏览器可能不会(可能不会)以您用于指定颜色的相同格式向您报告。在某些浏览器中,该值将返回为
“白色”
,并返回为
rgb(255、255、255)
等。因此,即使背景颜色为白色,比较也会经常失败。您必须处理这种复杂性,解析
rgb
并查找颜色名称等,或者像上面的示例一样维护一个标志


主题外:避免将字符串传递到
setTimeout
;而是直接使用函数引用。在您的情况下:

setTimeout(toggleBgColor, 70); //in milliseconds
请注意,没有引号,也没有
()
(因为它们将调用函数;我们希望传入它的引用,而不是它的返回值)

如果传递参数(您不在这里,但只是为了完整性),您可以使用函数来实现这一点:

setTimeout(function() {
    doSomething("foo", "bar");
}, 70);

不确定确切的推理,但通过JavaScript引用的css样式中从来没有-

如果您签出W3参考页面,您会注意到它们在“定义和用法”部分为属性提供了JavaScript语法:)

接下来的问题可能是,许多浏览器(至少是Chrome浏览器)没有在内部将背景颜色存储为十六进制值,而是使用RGB

因此,您的代码比较最终会将“rgb(0,0,0)”与“#000000”进行比较,因此永远不会返回true。我想一个快速解决方法就是在代码中使用rgb值

在我脑海中,我想象你的代码的固定版本应该是这样的:

function toggleBgColor()
{
    document.body.style.backgroundColor = document.body.style.backgroundColor == "rgb(255, 255, 255)" ? "rgb(0, 0, 0)" : "rgb(255, 255, 255)";
    setTimeout('toggleBgColor()', 70);
}
无论如何,希望这有帮助:)