2016-05-08 1 views
0

Ich habe diesen Code:jQuery - Wenn der Wert gleich einen dieser Punkte ist, dies zu tun

if(weather.temp >= 30) { 

    $("body").randomClass(sunny); 
    $("body").addClass('sunny'); 
    randno = sunnyquotes[Math.floor(Math.random() * sunnyquotes.length)]; 
    $('.home-main h1').text(randno); 
    } else if (weather.todayCode == 40||39||38||37||35||9||4||3||11) { 
    $("body").randomClass(rain); 
    $("body").addClass('rain'); 
    randno = rainquotes[Math.floor(Math.random() * rainquotes.length)]; 
    $('.home-main h1').text(randno); 
    } else if ((weather.temp > 18) && (weather.temp < 30) && (weather.todayCode == 32||30||34)) { 
    $("body").randomClass(moderate); 
    $("body").addClass('moderate'); 
    randno = moderatequotes[Math.floor(Math.random() * moderatequotes.length)]; 
    $('.home-main h1').text(randno); 
    } else if (weather.temp <= 18) { 
    $("body").randomClass(cold); 
    $("body").addClass('cold'); 
    randno = coldquotes[Math.floor(Math.random() * coldquotes.length)]; 
    $('.home-main h1').text(randno); 

    } 

und ich versuche Wetterbedingungen mit Yahoo Wetter zu bestimmen. Ich bleibe stecken, wo es heute Code erkennt.

Es fällt auf den ersten else if. Ich möchte, dass es nur ausgeführt wird, wenn todayCode mit einer dieser Nummern übereinstimmt. Ansonsten geh zum nächsten else wenn.

Obwohl es funktioniert, wenn ich nur eine Nummer haben zu erkennen, zum Beispiel:

else if (weather.todayCode == 40) 

Die Art, wie ich mehrere Nummern bin Überprüfung ist offensichtlich falsch.

Jede Hilfe würde sehr geschätzt werden.

Antwort

2

Ein einfacher Weg, um den Mehrfachvergleich zu erreichen, ist durch die Verwendung eines Arrays

if ([40,39,38,37,35,9,4,3,11].indexOf(weather.todayCode) > -1) 

indexOf

+0

Nice! +1 für die Verwendung von indexOf, ich habe nicht daran gedacht! – CoolBots

+0

Ausgezeichnet, danke. –

0

Der Vergleich falsch geschrieben ist. Versuchen Sie folgendes:

... 
else if (weather.todayCode == 40 || weather.todayCode == 39 || weather.todayCode == 38) //Add more conditions as necessary 
... 

Eine bessere Idee eine Funktion ist, die Schleife durch eine Reihe von gültigen Werten kann - besser lesbar, aber das obige Beispiel wird Ihr unmittelbares Problem beheben.

+0

Großartig, danke CoolBots. –

0

auch können Sie $ verwenden .inarray:

rainCode=[ 40,39,38,37,35,9,4,3,11]; 
if ($.inArray(weather.todayCode, rainCode) > -1) 
    $("body").addClass('rain'); 
Verwandte Themen