2016-12-14 9 views
-4

私のJavascriptコードはランダムに選択されるはずですが、常に最初のオプションを選択します。オプションを切り替えても、必ず上のものに移動します。私は間違いを犯したのか、それともどうすればこの問題を解決できますか?Javascript Elseが常にオプション1を選択した場合

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

答えて

2

かわり===(または===)を使用する必要があります。 割り当て、ない比較(===)です

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

。それは常に真実です。


さらに、test()に電話することはありません。それはあなたがランダムな選択を割り当てる場所ですので、


また、あなたは、ないvaluesvalueToUseをテストする必要があります。


さらに、両方valueToUsevaluesが局所的test()関数にスコープと外部利用できませんされています。割り当てによって新しいグローバル変数が作成されます。

1

よく、開始のためにif (values = 1)は比較するのに有効な方法ではありません。 =割り当てに注釈を付けるので、基本的に値を1に設定しています。jsの値を比較する場合は、このようにしますif (values === 1)

他のプログラミング言語では、通常は==を使用しますが、jsではこれを比較すると変数の型ではなく値がチェックされるので、数字2は文字列 "2"と一致します。 if (2 == "2") {//result is true}

は、あなたは、配列からランダムに選択された値を返すvalueに保管し、それをチェックすることができ、それはあなたのコードのフライを作るために値やタイプ if (2 == "2") {//result is false}

1

の両方をチェックします===使用している場合新しい方向。私はwindow.locationを省略し、比較結果を表示するために単純にconsole.logとします。

比較は厳密に行われ、文字列のチェックが行われます。

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

関連する問題