我无法在setInterval es6中更改全局变量

时间:2016-11-07 16:56:33

标签: javascript ecmascript-6 settimeout setinterval es6-promise

我必须在它出现时找到一个按钮。为了做到这一点,我使用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;
}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

第一:在foundInterval之上应该是foundVue。

第二:即使 foundValue 也总是未定义。为什么?

let foundValue;
function findById(id) {
  let interval = setInterval(() => {
   
      foundValue = "x"
      clearInterval(interval);
   
  }, 1000);
  return foundValue;
}
findById('main');
alert (foundInterval);