Javascript如果Else总是选择选项1

时间:2016-12-14 14:20:30

标签: javascript

所以我的Javascript代码应该随机选择,但它总是选择第一个选项,即使我切换选项,它总是会进入顶部。我是否犯了错误,或者我怎样才能让它发挥作用?

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

4 个答案:

答案 0 :(得分:6)

if (values = 1) {

这是分配,而不是比较(===)。它永远都是真的。

此外,您永远不会致电test()

此外,您应该测试valueToUse而不是values,因为那是您分配随机选择的地方。

此外,valueToUsevalues都是test()函数的本地作用域,并且在其外部不可用。您的作业会创建一个新的全局变量。

答案 1 :(得分:2)

您需要使用==(或===)代替=

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

答案 2 :(得分:1)

嗯,开始if (values = 1)不是比较的有效方法。  =注释赋值所以基本上你将值设置为1.如果你想比较js中的值,你可以这样做if (values === 1)

在其他编程语言中你通常使用==而不是在js中如果你这样比较它只会检查值而不是变量的类型所以数字2将匹配字符串“2”  if (2 == "2") {//result is true}

如果使用===,它将检查值和类型 if (2 == "2") {//result is false}

答案 3 :(得分: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");
}