if语句不重复该函数

时间:2017-10-25 06:42:45

标签: javascript

由于某些原因,当我的函数运行时,它第一次运行,但是当函数再次运行时它永远不会遇到其他语句,我的代码中有一些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; 
  }
};

3 个答案:

答案 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") {
  }