Mam problem z zagnieżdżonymi instrukcjami w języku JS. Pozwól mi pokazać przykład Przykład:

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

Dodałem instrukcję drukowania, dzięki czemu mogę sprawdzić wartości dla code, hour i icon (wartości są 502, 17 i 17) Powinienem więc odzyskać <i class='wi wi-day-sunny'></i>, ale zawsze skończyłem w ostatniej linii, aby wyjście jest np <i class='wi wi-sunny'></i> Dlaczego tak jest? Czego nie widzę? Każda pomoc bardzo doceniana, dzięki!

-1
Mickey Mahoney 29 czerwiec 2017, 18:38

3 odpowiedzi

Najlepsza odpowiedź

Twój kod po tym, jak, zawsze nadpisuj cokolwiek w tym, co, powinieneś użyć innego, lub po prostu przesuwać go przed, jeśli chcesz, jeśli zostanie zastawiony, co jest domyślne. Wypróbuj następujące czynności:

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
Dalin Huang 29 czerwiec 2017, 15:44

Dlaczego nie ustawić klasy domyślnej i zmienić klasę na podstawie swoich warunków?

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>
0
Woodrow 29 czerwiec 2017, 15:46

Prawdopodobnie wchodząc do bloku if, tak jak chcesz. Natychmiast po tym, używasz również ostatniej linii.

Rozważ, analogicznie, jeśli tak

if(foo) {
   bar = 7
}
bar = 0;

bar zawsze będzie 0 na końcu tego kodu. Jeśli foo jest prawdą, a następnie bar będzie bardzo krótko przez 7, a następnie natychmiast ustawić na 0.

Jeśli naprawdę chcesz, aby uruchamiać, gdy code < 699 nie powiedzie się, zamiast przez cały czas, umieść go w bloku else pod zewnętrzną if.

0
apsillers 29 czerwiec 2017, 15:43