首页 > 解决方案 > 让超时工作

问题描述

我在页面上有一个链接,并且希望在onLoad此链接之后定义的超时后将被另一个链接替换。我有以下示例代码:

window.addEventListener('DOMContentLoaded', changeLinks, false);

function timeout_init() {
    setTimeout('changeLinks()', 30000);
}

window.onload = changeLinks;

var _linksChanged = false;
function changeLinks() {
  if(_linksChanged) return;
  _linksChanged = true;
  var aEls = document.getElementsByTagName('a');
  for (var i = 0, aEl; aEl = aEls[i]; i++) {
    aEl.href = aEl.href.replace('https://google.com','https://yahoo.com'); 
  }
}
<a href="https://google.com" target="_blank">link</a>

问题:超时不起作用,链接立即被替换

onLoad只有在超时绑定到事件后才应该做些什么来替换链接?

标签: javascripttimeoutsettimeoutonloadonload-event

解决方案


window.onload = function() {
  var _linksChanged = false;
  setTimeout(changeLinks, 30000);
}
function changeLinks() {
  if(_linksChanged) return;
  _linksChanged = true;
  var aEls = document.getElementsByTagName('a');
  for (var i = 0, aEl; aEl = aEls[i]; i++) {
    aEl.href = 
    aEl.href.replace('https://google.com','https://yahoo.com'); 
  }
}

推荐阅读