函数在 onclick 中无法正确调用

functions not calling correctly in onclick

我有一个按钮,通过这个按钮,我试图调用两个函数,但它们似乎相互抵消了。

在控制台中它显示我已经对它们进行了编号并将它们连接到函数,例如第 1 行来自函数“addValue”中的 console.log。

第 1 行 - ['Name: graphqless Description: REST and GraphQ… URL: https://github.com/tylerbuchea/graphqless']

第 2 行 - []

行 - 3 RepoList.js?5216:74 ['Name: graphqless Description: REST and GraphQ… URL: https://github.com/tylerbuchea/graphqless'] 本地存储为空。

当我点击按钮时期望的输出如下,应该调用功能一,只有再次点击后才能调用功能二。

值为字符串

函数

const favs = JSON.parse(localStorage.getItem('name') || []);




    function addValue(e) {
        if (e.target.value !== "") {
          
          if (!favs.includes(e.target.value)) {
            favs.push(e.target.value);
            localStorage.setItem("name", JSON.stringify(favs));
//line 1            
console.log(favs);
            document.getElementById("favsarray").innerHTML =  favs
          }
        }
      }

  





//Check if value is in the array, if it then remove the value from both the array and localstorage
  f

unction removeValue(e, value) {
        if (e.target.value !== "") {
          //delete from array
          favs.pop(e.target.value);
//line 2          
console.log(favs);
          //change the div text
          document.getElementById("favsarray").innerHTML = favs;
          //get the values from localstorage- parse
          const stored = JSON.parse(localStorage.getItem("name"));
          //delete the value
          delete stored[(value, e.target.value)];
          //store the new array as a string
          localStorage.setItem("name", JSON.stringify(favs));
//line 3          
console.log(stored);
        }
      }

这就是我调用函数的方式

onClick={(e)=> {addValue(e); removeValue(e);}}

您需要添加逻辑来确定状态。不知何故,你需要一个布尔值来知道你处于什么状态。所以你要么翻转一个布尔变量,要么添加删除一个 class.

使用布尔值

function doAdd(elem) {
  console.log("add called", elem);
}

function doRemove(elem) {
  console.log("remove called", elem);
}

let actionSate = false;
function doAction(e) {
  const elem = e.currentTarget;
  actionSate = !actionSate;
  if (actionSate) {
    doAdd(elem);
  } else {
    doRemove(elem);
  }
}
<button type="button" onclick="doAction(event)">Click</button>

使用 class 可以让您拥有多个触发器。每个人都可以自己工作。

function doAdd(elem) {
  console.log("add called", elem);
}

function doRemove(elem) {
  console.log("remove called", elem);
}


function doAction(e) {
  const elem = e.currentTarget;
  elem.classList.toggle("action");
  if (elem.classList.contains("action")) {
    doAdd(elem);
  } else {
    doRemove(elem);
  }
}
.action {
  color: blue;
}
<button type="button" onclick="doAction(event)">Click 1</button>
<button type="button" onclick="doAction(event)">Click 2</button>