我在JS中遇到嵌套if语句的问题。让我告诉你代码示例:
if (code < 699) {
if(hour > 6 && hour < 20) {
$("#weatherIcon").html("<i class='wi wi-day-" + icon + "'></i>");
}
else {
if(icon == "sunny") {
$("#weatherIcon").html("<i class='wi wi-night-clear'></i>");
}
$("#weatherIcon").html("<i class='wi wi-night-alt-" + icon + "'></i>");
}
}
$("#weatherIcon").html("<i class='wi wi-" + icon + "'></i>");
}
我添加了一个打印语句,因此我可以检查code
,hour
和icon
的值(值为502
,17
和{{1所以我应该返回rain-mix
但是我总是在最后一行结束,所以输出是例如<i class='wi wi-day-sunny'></i>
为什么?我没看到什么?
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
if (code < 699) {
if (hour > 6 && hour < 20) {
$("#weatherIcon").html("<i class='wi wi-day-" + icon + "'></i>");
} else {
if (icon == "sunny") {
$("#weatherIcon").html("<i class='wi wi-night-clear'></i>");
} else {
$("#weatherIcon").html("<i class='wi wi-night-alt-" + icon + "'></i>");
}
}
} else {
$("#weatherIcon").html("<i class='wi wi-" + icon + "'></i>");
}
答案 1 :(得分:0)
您可能 正在输入if
块,就像您想要的那样。在此之后,您也可以立即运行最后一行。
类似地考虑,如果你做了
if(foo) {
bar = 7
}
bar = 0;
该代码末尾的bar
始终为0
。如果foo
为真,那么bar
将非常简短地7
,然后立即设置为0
。
如果您确实希望在code < 699
失败时运行该行,而不是一直将其放在最外面else
下的if
块内。
答案 2 :(得分:0)
为什么不设置默认类并根据您的条件更改类?
let code = 502;
let hour = 17;
let iconClass = 'wi-rain-mix';
if (code < 699) {
if (hour > 6 && hour < 20) {
iconClass = 'wi-day-rain-mix';
} else {
if (icon == "sunny") {
iconClass = 'wi-night-clear';
} else {
iconClass = 'wi-night-alt-rain-mix';
}
}
}
$("#weatherIcon").html("<i class='wi " + iconClass + "'></i>");
// Check the weather class..
console.log($('.wi').attr('class'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="weatherIcon"></div>