Javascript if/else天气总是进入else

Javascript if/else天气总是进入else,javascript,Javascript,我从API获取天气数据,并希望显示图标 看起来是这样的:对于测试,我现在不使用api数据 var图标=晴朗的夜晚; 如果图标==晴天{ 图标=晴天; } 如果图标==清除夜晚{ icon=夜间清除; } 如果图标==雨{ 图标=雨滴; }否则{ 图标=温度计; } 控制台逻辑 这是因为您基本上忽略了以前为图标考虑的任何值 在你的情况下,你考虑图标的值是晴天还是晴天,然后检查是否下雨。如果不下雨,则只执行该If的else子句 如果条件相互排斥,则需要使用else ifs var icon = "

我从API获取天气数据,并希望显示图标

看起来是这样的:对于测试,我现在不使用api数据

var图标=晴朗的夜晚; 如果图标==晴天{ 图标=晴天; } 如果图标==清除夜晚{ icon=夜间清除; } 如果图标==雨{ 图标=雨滴; }否则{ 图标=温度计; }
控制台逻辑 这是因为您基本上忽略了以前为图标考虑的任何值

在你的情况下,你考虑图标的值是晴天还是晴天,然后检查是否下雨。如果不下雨,则只执行该If的else子句

如果条件相互排斥,则需要使用else ifs

var icon = "clear-night";

if (icon == "clear-day") {
    icon = "day-sunny";
}
else if (icon == "clear-night") {
    icon = "night-clear";
}
else if (icon == "rain") {
    icon = "raindrops";
} else {
    icon = "thermometer";
}

console.log(icon);
更好的是,正如其他人在评论中所建议的,使用开关构造

var icon = "clear-night";

switch(icon) {
case "clear-day":
    icon = "day-sunny";
    break;
case "clear-night":
    icon = "night-clear";
    break;
case "rain":
    icon = "raindrops";
    break;
default:
    icon = "thermometer";
}
console.log(icon);

每当我看到这样的构造时,我就会开始思考一个简单的映射是否是一个理想的解决方案

下面是一个例子

函数daymapicon{ 返回{ 晴朗的一天:晴朗的一天, 晴朗的夜晚:晴朗的夜晚, 雨:雨滴 }[图标]| |温度计; } console.logdaymapclear-night; console.logdaymaprain;
console.logdaymappother;在你所有的if前面放一个else,第一个除外。或者查看switch/case构造。执行3条if语句。所有3个,无条件。使用else if而不是if second if forwards。else ifon!='“夜间安全”但在这种情况下切换得更好谢谢!我现在使用了switch语句,效果非常好:看看你的历史,你似乎从未接受过答案。但开始永远不晚:退房。谢谢!我不知道,但这似乎是一个很好的解决办法。我现在使用switch语句。