2016-12-14 94 views
-4

所以我的Javascript代碼應該隨機選擇,但它總是選擇第一個選項,即使我切換選項,它總是會選擇最上面的選項。我是否犯了一個錯誤,或者我怎樣才能使這個工作?Javascript If 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()


此外,您應該測試valueToUsevalues,因爲這是您將其分配隨機選擇。


此外,這兩種valueToUsevalues是局部範圍的test()功能不可用外面。您的任務創建一個新的全局變量。

1

那麼,開始if (values = 1)是不是比較有效的方式。 =註釋賦值,所以基本上你設置的值爲1.如果你想比較js中的值,你這樣做if (values === 1)

在其他編程語言ü通常使用==在JS代替但是如果你這樣比較它只會檢查值不是變量的類型,所以2號將匹配字符串「2」 if (2 == "2") {//result is true}

如果使用===會同時檢查值和類型 if (2 == "2") {//result is false}

1

要使代碼飛,你可以從陣列中返回一個隨機選擇的值,將其存儲在value,檢查其是否新的方向。我省略了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"); 
 
}