我是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 = flase
和wide = true
移到onclick事件之外,但这是相同的。
答案 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
,而不是将这两个值进行相等比较。在您的情况下,您可以使用==
或===
来检查是否相等。
前者(==
)仅比较值,而后者(===
)比较值+类型。