javascript新手,可以't计算出document.getElementById与if语句中的值是否匹配
New to javascript, and can't figure out matching document.getElementById to value in an if statement
因此,我正试图通过使用javascript切换按钮来更改容器div的颜色,但我认为在尝试让div在语句中工作时,我缺少了一些明显的东西。当我运行代码并按下切换按钮时,什么都不会发生。非常感谢。
<!DOCTYPE html>
<head>
<style>
body {
}
#container {
height: 300px;
width: 500px;
background: lightblue;
position: absolute;
float: center;
text-align: center;
}
h1 {
font-size: 50px;
font-family: sans-serif;
}
#button {
font-size: 30px;
}
</style>
<script>
function toggleColour()
{
if (document.getElementById('container').style.background == ("lightblue"))
{
document.getElementById('container').style.background = ("orange");
}
else
{
document.getElementById('container').style.background = ("lightblue");
}
}
</script>
<body>
<div id="container">
<h1>Lets button this up!</h1>
<button type="button" id="button" onclick="toggleColour()">Toggle Colour</button>
</div>
</body>
三件事:
background
是一个简写的CSS属性,它将许多背景属性组合在一起(请参阅此处的列表)。如果只使用background
设置背景色,则仍然需要从background-color
读取结果(如果它是您正在设置的唯一背景属性,则也应该在CSS中使用它)- CCD_ 4和CCD_。大多数浏览器(如果不是全部?)都会返回RGB值(例如
rgb(173, 216, 230)
代表lightblue
),即使颜色是使用颜色名称设置的 - JavaScript中的
.style
不返回CSS应用的样式,只返回那些直接使用元素的style属性应用的样式。您需要使用window.getComputedStyle()
在这种情况下,假设背景颜色的开始状态并使用标志来跟踪它会简单得多
var bg = 'lightblue';
function toggleColour()
{
if( bg === "lightblue" )
{
bg = "orange";
}
else
{
bg = "lightblue";
}
document.getElementById('container').style.background = bg;
}
请注意,字符串文字周围不需要括号,使用严格的===
进行比较是一种很好的形式。
@Bergi是对的。要获得元素的结果样式(来自CSS或内联样式),您可以在实际浏览器(Chrome、Firefox、Safari、Opera和IE9)中使用getComputedStyle,在版本9之前的IE中使用currentStyle
。
您的问题是.style
属性只反映元素的style
属性(它是空的),而不是通过CSS应用于它的所有样式。因此,在第一次单击时,.style.background
为空,并且将被设置为显式"lightblue"
(您看不到)。第二次单击时,它现在已设置并满足if条件,因此它将更改为"orange"
。
你能做什么:
- 使用
getComputedStyle
获取实际值。然而,最初应该是rgb(173, 216, 230)
而不是lightblue
,因此跨浏览器解决方案并不容易 - 只需交换条件:如果它是橙色,则将其设置为蓝色,否则(如果它是蓝色或什么都没有)将它设置为橙色。(演示)
- 在HTML中将
style
属性设置为起始值(演示)
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- Javascript:If-then语句在函数中不起作用
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 如何检查if/else语句中的随机条件
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- Node.js-承诺和锥形语句(if、switch等)-如何构建
- 如何在嵌套ng重复指令中使用控制语句(if语句)
- 如何创建语句if包含"&"
- If语句- If主体有一个类remove在滚动原生javascript
- Javascript中的if语句- if - else问题