JS中的嵌套if-Statements如何工作?

时间:2017-06-29 15:38:36

标签: javascript if-statement nested

我在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>");
   }

我添加了一个打印语句,因此我可以检查codehouricon的值(值为50217和{{1所以我应该返回rain-mix但是我总是在最后一行结束,所以输出是例如<i class='wi wi-day-sunny'></i>为什么?我没看到什么? 非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:1)

你的代码在if之后,总是覆盖if中的内容,你应该使用else,或者只是在if之前移动它,if if if if overwrite default是什么。请尝试以下方法:

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>