2017-07-20 2 views
0

Ich möchte eine Variable "Stadt" global und verwenden Sie es in anderen Funktionen. Ich bin ein JSON-Daten anfordert, und es scheint, in dieser FunktionJSON-Variable undefiniert, wenn global

var city; 

function conditions(data) { 
     var city = data.current_observation.display_location.full; 
     var wcode = data.current_observation.icon; 

     $('#city').append('<h2>' +'Weather forecast in ' + city + '</h2>'); 
     $('#city').addClass('headings-style'); 

    } 

Aber zu arbeiten WHE Ich versuche variable Stadt in anderer Funktion verwenden Ich erhalte ein undefinierten Daten:

function forecastDays(info) { 
     var locationOne = info.forecast.simpleforecast.forecastday; 
     locationOne.forEach(function (daysPlus) { 

     var high = daysPlus.high.celsius; 
     var low = daysPlus.low.celsius; 
     var arr = ["day1", "day2", "day3", "day4"]; 
     jQuery.each(arr, function (i, val) { 

      $("#temp_" + val).html('<p>' + city + 'High: ' + high + '&deg;C' + '<br>' + ' Low: ' + low + '&deg;C' + '</p>'); 

      }); 
     }); 

Bitte , Hilfe.

+2

Sie erneut declare ':

Im Beispiel unten, die city Variable korrekt im globalen Bereich, in dem die town Variable neu definiert wird in der Funktion Umfang verwendet werden Stadt "innerhalb" Bedingungen ". Tun Sie 'city = ...' anstelle von 'var city = ...'. – ideaboxer

+0

Eine gute Frage! Es ist ein Fehler, der oft gemacht wird, und deshalb ist es gut, dass darauf geachtet wird. –

Antwort

4

Statt

var city = data.current_observation.display_location.full; 

tun sollten Sie tun

city = data.current_observation.display_location.full; 

, um den Wert der globalen city variabel einzustellen. Durch die Wiederverwendung des Schlüsselworts var wird eine neue Variable city im Funktionsumfang anstelle von global deklariert.

-1

var löschen city in funtion conditions

1

wenig, zu spät, aber hier ist ein Beispiel. (@J. Chen zur Verfügung gestellt, die Antwort)

Wenn Sie var city = verwenden Sie die Variable innerhalb des Funktionsumfangs sind neu zu definieren, so dass es nicht mehr zugänglich aus dem globalen Bereich.

var city; 
 
var town; 
 

 
function foo() { 
 
    city = "New York"; 
 
    var town = "Boston"; 
 
}; 
 

 
function bar() { 
 
    console.log(city); 
 
    console.log(town); 
 
} 
 

 
foo(); // assigns the variable a value 
 
bar(); // console "New York"/undefined
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Verwandte Themen