我不能改变setInterval内的全局变量

I can't change global variable inside setInterval es6

本文关键字:全局变量 setInterval 不能 能改变      更新时间:2023-09-26

我必须找到一个按钮时,它会出现。为了做到这一点,我使用setInterval。当它找到这个按钮时,它给我的变量所需的值。我在setTimeout中检查它,但是在setTimeout之后(在这些方法之外),我的全局变量变成了setTimeout之前的样子。如何解决这个问题?

let foundValue;
function findById(id) {
  let interval = setInterval(() => {
    if (document.getElementById(id)){
      let foundValue = document.getElementById(id);
      clearInterval(interval);
    }
  }, 1000);
  return foundValue;
}

这是因为你在setInterval中重新声明了foundValue,所以你应该删除第二个let,例如:

let foundValue;
function findById(id) {
  let interval = setInterval(() => {
    if (document.getElementById(id)){
      foundValue = document.getElementById(id);
      clearInterval(interval);
    }
  }, 1000);
  return foundValue;
}