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