2017-04-26 2 views
1

ich diesen Code-Block fallen müssen, die auf den simpleweather.js basiert:Switch-Anweisung scheint nicht durch

$(document).ready(function() { 
    var conditionsImageClass; 
    $.simpleWeather({ 
     location: 'Leon, Spain', 
     woeid: '', 
     unit: 'f', 

    success: function(weather) { 
     switch(weather.code) { 
      case 27: 
       conditionsImageClass = '.diw-clouds:before'; 
       break; 
      case 28: 
       conditionsImageClass = '.diw-clouds-moon:before'; 
       break; 
      default: 
       conditionsImageClass = '.test' 
       break; 
     } 

     alert(weather.code); 
     alert(conditionsImageClass); 

     var loc = '<h5>'+weather.city+', '+weather.region+'</h5>'; 
     html = '<p>Today</p><p><strong>'+returnsDate()+'</strong></p>'; 
     html += '<i class="' + conditionsImageClass + '"></i>'; 
     html += '<h2><strong><i class="icon-'+weather.code+'"></i> '+weather.temp+'&deg;'+weather.units.temp+'</strong></h2>'; 
     html += '<h5 class="currently">'+weather.currently+'</h5>'; 
     $("#location").html(loc); 
     $("#weather").html(html); 

    }, 
    error: function(error) { 
     $("#weather").html('<p>'+error+'</p>'); 
    } 
    }); 
}); 

Im Augenblick ist die switch-Anweisung scheint nicht zu Ausführung. Ich habe es nicht vollständig ausgearbeitet, weil ich es unter den aktuellen Bedingungen testen wollte. Im Moment ist der Statuscode für Leon "28" oder meist bewölkt. Aber die switch-Anweisung ist immer voreingestellt, obwohl es einen Fall für '28' gibt. Irgendwelche Ideen, warum es das macht? Lassen Sie es mich wissen, wenn Sie mehr Code benötigen.

+0

ich weather.code bin zu raten, einen String zurückgibt. Sie müssen es zuerst analysieren –

+0

Debugging .... 'console.log (Wetter)' bei mindestens ... –

Antwort

1

Sie nicht Standort verwenden können: 'Leon, Spanien', + WOEID: '', zusammen . Um einen Standort zu identifizieren, können Sie ein gültiges Feld in Ihrem Fall verwenden.

$.simpleWeather({ 
 
    location: 'Leon, Spain', 
 
    unit: 'f', 
 
    success: function(weather) { 
 
     console.log('weather.code is: ' + weather.code); 
 
     switch(weather.code) { 
 
      case '27': 
 
       conditionsImageClass = '.diw-clouds:before'; 
 
       break; 
 
      case '28': 
 
       conditionsImageClass = '.diw-clouds-moon:before'; 
 
       break; 
 
      default: 
 
       conditionsImageClass = '.test' 
 
       break; 
 
     } 
 
     console.log('conditionsImageClass is: ' + conditionsImageClass); 
 
    }, 
 
    error: function(error) { 
 
     console.log('Error: ' + error); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.simpleWeather/3.1.0/jquery.simpleWeather.min.js"></script>

+0

Verwenden von Ort, wie bekommt es tatsächlich einen Ort? – pmath325

+0

@ pmath325 Von [doc] (http://simpleweatherjs.com/): Sie geben einfach Ihre US-Postleitzahl, WOEID, Lat/Long oder einen beliebigen Ort in der Welt. Wenn ich auch mit Ihrem leeren WOEID-Parameter getestet habe, habe ich einen Fehler bekommen. – gaetanoM

-1

weather.code ist wahrscheinlich eine Zeichenfolge. Ihre Fälle prüfen auf Ganzzahlen und passen daher nicht zusammen. Sie müssen den Wettercode mit parseInt() analysieren oder jeden Fall in eine Zeichenfolge umwandeln.

switch(parseInt(weather.code)) { 
    case 27: 
     conditionsImageClass = '.diw-clouds:before'; 
     break; 
    case 28: 
     conditionsImageClass = '.diw-clouds-moon:before'; 
     break; 
    default: 
     conditionsImageClass = '.test'; 
} 

Ein vereinfachtes Beispiel zeigt den Unterschied

console.log(displayWeatherCode(27)); // "27!" 
 
console.log(displayWeatherCode("27")); // "Default!" 
 

 
function displayWeatherCode(weatherCode) { 
 
    switch(weatherCode) { 
 
     case 27: 
 
      return "27!"; 
 
     case 28: 
 
      return "28!"; 
 
     default: 
 
      return "Default!"; 
 
    } 
 
}