需要使用if else语句的助手

时间:2016-05-03 14:29:49

标签: javascript

我是javascript的新手,所以请帮助我了解我的问题。

setTimeout(function() {
    var wide = false;
    if(wide = false) {
        document.querySelector(".some-class").onclick = function() {
            document.querySelector("#some-id").className += " MyClass";
            wide = true;
        };
    }
    else {
        document.querySelector(".some-class").onclick = function() {
            document.querySelector("#some-id").className =
            document.querySelector("#some-id").className.replace(/\bMyClass\b/,'');
            wide = false;
        };
    }
}, 1000);

这不起作用(不添加MyClass)。但如果我只使用这个:

setTimeout(function() {
document.querySelector(".some-class").onclick = function() {
document.querySelector("#some-id").className += " MyClass";
};
}, 1000);

然后它工作正常。那么我的代码无法解决的问题是什么?

PS: 谢谢。这就是我得到的:

setTimeout(function() {
    var wide = false;
    if(wide == false) {
        document.querySelector(".some-class").onclick = function() {
            document.querySelector("#some-id").className += " MyClass";
            wide = true;
        };
    }
    else {
        document.querySelector(".some-class").onclick = function() {
            document.querySelector("#some-id").className =
            document.querySelector("#some-id").className.replace(/\bMyClass\b/,'');
            wide = false;
        };
    }
}, 1000);

它有效,但现在它只在每个onclick事件上添加MyClass而不是删除它。我尝试将else与else一起玩,并尝试将wide = flasewide = true移到onclick事件之外,但这是相同的。

2 个答案:

答案 0 :(得分:1)

问题是你有:if (wide = false) {... 这是将wide设置为false,而不是比较值。

要比较值,请使用=====

  • 单身等于 - >定义/设置变量。

  • Double equals - >与类型转换比较。例如:("2" == 2) // true

  • Triple equals - >比较没有类型转换。例如:("2" === 2) // false

对于您的问题,您可以使用double或triple equals。

答案 1 :(得分:0)

更改为if(wide === false) {...}

如果您使用=,则设置wide等于false,而不是将这两个值进行相等比较。在您的情况下,您可以使用=====来检查是否相等。

前者(==)仅比较值,而后者(===)比较值+类型。