css 带有www.example.com的.somee.target.dataset.id返回false,但硬编码值返回true

lmvvr0a8  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(109)
pokemonContainer.addEventListener('click', function (e) {
  let favourite = getStorageItem('pokemon');
  let eTargetID = e.target.dataset.id;
  let found = favourite.some((el) => el.id === eTargetID);
  console.log(found);
  console.log(eTargetID);
  if (!found) {
    favourite.push(pokemonArray[e.target.dataset.id - 1]);
    setStorageItem('pokemon', favourite);
  }
});

我试图在一个包含对象的数组中查找id。对象的id为1。我的e.target.dataset.id是1,但它返回false。但是当我硬编码值el.id === 1时,它返回true。我做错了什么吗?为什么e.target.dataset.id也是1,它却返回false?

x3naxklr

x3naxklr1#

使用el.id == eTargetId而不是el.id === eTargetId。(仅使用两个等号,而不是三个。)
e.target.dataset.id是一个JavaScript数字1。(它是一个可以进行数学运算的对象,就像3.141一样)
但是HTML元素ID是一个JavaScript字符串"1"(它由字母组成,如"I have 1 apple.")。
在JavaScript中,有一个模糊相等运算符==,当与字符串比较时,数字被当作字符串来读,所以1=="1"为真。
还有一个严格的相等运算符,在这里字符串和数字被认为是完全不同的东西,所以1==="1"是假的。

相关问题