jQuery if/else语句不工作
jQuery if/else statements not working
对jQuery非常陌生,我不明白为什么这一小段代码不能工作。我将body的背景设置为黑色,但是我总是返回else语句,并且我的背景变为橙色而不是期望的粉红色。
$(document).ready(function(){
$("body").css("background","black");
if ($("body").css("background") == "black") {
$("body").css("background", "pink");
}
else {
$("body").css("background", "orange");
}
});
你可以看到这里发生了什么:http://jsfiddle.net/jH6Y9/1/
你不能只要求像"background"这样的复合CSS样式;该值返回为空字符串。输入"background-color"。(编辑本;Firefox给我一个空字符串;其他浏览器可能会为您构建整个复合背景属性集。
现在,一旦你解决了这个问题,你会发现报告的颜色不会是"黑色"。它将是表示"黑色"的其他颜色语法。不要依赖样式机制来跟踪正在发生的事情,而是使用类来代替:
$("body").addClass("black");
if ($("body").hasClass("black"))
$("body").addClass("pink");
else
$("body").addClass("orange");
然后在你的CSS中:
body.black { background-color: black; }
body.pink { background-color: pink; }
body.orange { background-color: orange; }
更好的是,使用一些语义上有意义的名称来表示页面的状态,而不是颜色名称,这样,如果您稍后改变主意并希望将背景从狗切换到小猫,代码仍然是有意义的。
css 'background'为您提供了完整的背景参数,它看起来像:
"rgb(0,0,0) none repeat scroll..."
如果你只是想检查颜色,你需要指定你想要的颜色属性,并测试它实际使用的值,而不是"黑色",你实际上想要测试rgb颜色值:
if ($('body').css("background-color") == "rgb(0, 0, 0)")
修复方法很简单。$("body").css("background-color", "black") !== "black"
。它等于rgb(0, 0, 0)
。在CSS中,"black"
不是真正的颜色。相反,它被转换成rgb()
颜色。修复:
$(document).ready(function(){
$("body").css("background-color","black");
console.log($("body").css("background-color"))
if ($("body").css("background-color") == "rgb(0, 0, 0)") {
$("body").css("background-color", "pink");
}
else {
$("body").css("background-color", "orange");
}
});
<标题>小提琴 标题>相关文章:
- 此 JavaScript 代码无法正常工作(if-else 语句)
- JqueryUI,多个ID和else if 语句在可丢弃,我如何让它们工作
- 用于检查文件扩展名不工作的Javascript If语句
- 为什么不'我的if/else语句不能正常工作
- 为什么我的 javascript else 语句停止工作
- 不了解这种返回语句是如何工作的
- 可以't使if-else-jquery语句工作
- Check IF条件返回false,但IF中的语句仍然可以在JavaScript中工作
- Javascript/JQuery嵌套if语句工作不正常
- 对于语句未按预期工作
- 如果语句按预期工作,为什么这不行
- 如果,否则如果语句无法正常工作
- 如何在 JavaScript 中工作,如果不在控制语句中
- if 和 else-if 语句拒绝在 jQuery 的 AJAX 函数中工作
- 这个 if 语句如何工作和意味着?(Javascript)
- ELSE/IF 语句无法正常工作
- 如果语句不能在 Javascript 单选按钮上正常工作
- Cookie if 语句无法正常工作
- 延迟语句(如 promise() 和 done())如何工作
- 如果语句在控制台中工作,而不是在源代码中工作