单击3次后无法替换元素

时间:2019-09-13 20:57:20

标签: javascript html ajax replace element

我写了简短的JavaScript代码来替换3次点击后的元素。超过3次点击后,元素将自己替换为url。但是问题在于它无法正常工作。 3次单击后,我试图使其替换为自己,但可能将其编码错误。请赐教。

原始代码:

function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     document.getElementById("replace1").innerHTML = this.responseText;   
    }
  };
  xhttp.open("GET", "https://natevanghacks.com/replacements/yoinkexecutor2.html"), true;
  xhttp.send();
}

重新编码后仅可点击3次,但无效:

function loadDoc() {
  var xhttp = new XMLHttpRequest();
  let count = 0;
  let callback = function() {
    count++;  
    if (count >= 3) {
      document.getElementById("replace1").innerHTML = this.responseText;  
    }
    iframe1.click(callback);  
    xhttp.open("GET", "https://natevanghacks.com/replacements/yoinkexecutor2.html"), true;
    xhttp.send();
  }
};

1 个答案:

答案 0 :(得分:1)

count设置为全局变量意味着超出函数范围:

let count = 0;
function loadDoc() {
  var xhttp = new XMLHttpRequest();

  let callback = function() {
    count++;  
    if (count >= 3) {
      document.getElementById("replace1").innerHTML = this.responseText;  
    }
    iframe1.click(callback);  
    xhttp.open("GET", "https://natevanghacks.com/replacements/yoinkexecutor2.html"), true;
    xhttp.send();
  }
};

在函数中定义count时,每次计数都重置为其默认值0

这就是为什么您需要在函数之外定义count