2016-12-14 3 views
-4

So soll mein Javascript-Code nach dem Zufallsprinzip auswählen, aber es wählt immer die erste Option aus, auch wenn ich die Optionen umschalte, geht es immer an die oberste. Habe ich einen Fehler gemacht oder wie kann ich das zum Laufen bringen?Javascript Wenn Sonst immer Option 1 auswählt

function test() { 
    var values = ["1","2"], 
     valueToUse = values[Math.floor(Math.random() * values.length)]; 
    // do something with the selected value 
    alert(valueToUse); 
} 

if (values = 1) { 
window.location = "tail.html"; } 
else if (values = 2) { window.location = "head.html"; } 

Antwort

2

Sie müssen == verwenden (oder ===) statt =.

if (values == 1) { 
    // and so on... 
} 
6
if (values = 1) { 

Das eine Zuordnung ist, kein Vergleich (===). Es wird immer wahr sein.


Darüber hinaus rufen Sie nie test().


Darüber hinaus sollten Sie valueToUse nicht values testen, denn das ist, wo Sie Ihre zufällige Wahl zuweisen.


Zusätzlich beide valueToUse und values werden lokal auf die test() Funktion scoped und sind außerhalb nicht zur Verfügung. Ihre Zuweisung erstellt eine neue, globale Variable.

1

Nun, für den Anfang ist nicht der gültige Weg zu vergleichen. = Anmerkungen Zuordnung so im Grunde Sie setzen den Wert auf 1. Wenn Sie Werte in js vergleichen möchten, tun Sie es so if (values === 1).

In anderen Programmiersprache in der Regel u verwenden == stattdessen jedoch in js, wenn Sie es auf diese Weise zu vergleichen, wird es nur den Wert überprüfen, nicht der Typ der Variablen so eine Nummer 2 wird eine Zeichenkette „2“ if (2 == "2") {//result is true} entspricht.

Wenn Sie === es prüft sowohl den Wert und den Typ if (2 == "2") {//result is false}

1

Um Ihren Code Fliege zu machen, können Sie einen zufällig ausgewählten Wert aus dem Array zurückkehren könnte, sollte sie in value und überprüfen Sie es für die neue Richtung. Ich lasse window.location und uns einfach console.log für die Anzeige des Ergebnisses des Vergleichs.

Der Vergleich ist streng, mit einer Überprüfung für eine Zeichenfolge.

function test() { 
 
    var values = ["1", "2"], 
 
     valueToUse = values[Math.floor(Math.random() * values.length)]; 
 

 
    return valueToUse; 
 
} 
 

 
var value = test(); 
 

 
if (value === '1') { 
 
    console.log("tail.html"); 
 
} else if (value === '2') { 
 
    console.log("head.html"); 
 
}