由于某些原因,当我的函数运行时,它第一次运行,但是当函数再次运行时它永远不会遇到其他语句,我的代码中有一些if语句有问题,这只是一个基本的。我究竟做错了什么?使用vanilla javascript
function checkOffTodoItem(event) {
var node = event.target.parentNode;
var parent = node.parentNode;
var classNames = parent.className;
if (classNames = "li01") {
var newList = classNames.replace("li01", "li02");
parent.className = newList;
} else {
var newList = classNames.replace("li02", "li01");
parent.className = newList;
}
};
答案 0 :(得分:5)
使用'==='与if中的类名进行比较。
function checkOffTodoItem(event) {
var node = event.target.parentNode;
var parent = node.parentNode;
var classNames = parent.className;
if (classNames === "li01") {
var newList = classNames.replace("li01", "li02");
parent.className = newList;
} else {
var newList = classNames.replace("li02", "li01");
parent.className = newList;
}
};
答案 1 :(得分:2)
在javascript中,值不是null
,不是false
,不是undefined
,不是""
(空字符串),不是NaN
(不是数字) ),并且在if语句条件中不等于0
始终为真。
因此,"my string"
为true
,['my', 'array', 'of', 'string']
为true
,{"my": "great object"}
也为true
。
在您的代码中:
classNames = "Li01"
......意思是:
put the value "Li01" in `classNames` variable.
所以,现在:
`classNames` is equal to "Li01"
=>
`classNames` is true in an if statement condition.
=>
if ( classNames = "Li01" ) // => ALWAYS true
CQFD
答案 2 :(得分:0)
您正在分配而不是进行比较 你需要“==” e.g。
if (classNames == "li01") {
}