javascript - 让超时工作
问题描述
我在页面上有一个链接,并且希望在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
只有在超时绑定到事件后才应该做些什么来替换链接?
解决方案
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');
}
}
推荐阅读
- c - 用户在单行中输入的每个字符的错误消息输出?
- flutter - 如何在 Flutter 中显示一堆相同的小部件?
- sqlite - sqlite 提取数据集,其中一组中的不同行需要具有特定值
- google-apps-script - 如果需要,如何使用 LockService 正确等待另一个执行完成
- spring - 如何在 OAuth2 WebFlux 中设置成功和失败处理程序
- listview - 颤振选择对话框 - 将过滤器字段滚动到视图中
- sql-server - 将新行插入表中?
- amazon-web-services - AWS API Gateway - 内部访问
- python - 电报机器人向自己发送消息但不在公共组中
- html - 我如何在 explorer 11 中使用 FrameSet?