我是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,而不是将其删除。我试图与elseif一起玩,并尝试将
wide = flase
和wide = true
移到onclick事件之外,但这是相同的。 最佳答案
问题是您有:if (wide = false) {...
这会将wide
设置为等于false
,而不是比较值。
要比较值,请使用==
或===
。
单等号->定义/设置变量。
Double equals->比较类型转换。例如:("2" == 2) // true
三重等于->比较,不进行类型转换。例如:("2" === 2) // false
对于您的问题,可以使用双倍或三倍等于。