如何设置延迟
How to set delay
我有这行代码:
document.querySelector(".theclass").outerHTML = "The outerHTML";
它在加载页面时立即启动,但这会导致"无法设置未定义或null引用的属性"错误。据我所知,这可能是因为.theclass
还没有出现,因此脚本无法针对它
有没有一种简单的方法,使用JavaScript只需为这行代码设置一个延迟,但它会像加载页面时那样继续自动启动?
尝试使用
document.onload=function(){
document.querySelector(".theclass").outerHTML = "The outerHTML";
};
EDIT:对于异步加载,您可以使用jQUery
$(document).on('DOMNodeInserted', function(e) {
if ($(e.target).is('.theclass')) {
document.querySelector(".theclass").outerHTML = "The outerHTML";
}
});
一个选项是使用MutationObserver来侦听元素添加,当添加目标元素时,我们可以更新它并删除observer
setTimeout(function() {
document.getElementById('parentelement').innerHTML = '<span class="theclass">theclass</span>';
}, 500);
// select the target node
var target = document.querySelector('#parentelement');
// create an observer instance
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type, mutation);
Array.from(mutation.addedNodes).forEach(function(el) {
if (el.classList.contains('theclass')) {
el.outerHTML = "The outerHTML";
observer.disconnect();
}
});
});
});
var config = {
childList: true
};
observer.observe(target, config);
<div id="parentelement"></div>
相关文章:
- 在延迟时设置Whois脚本
- 如何通过justinaguilar.com设置动画延迟?[解决]
- JQueryAJAX:防止由于设置间隔函数而导致的延迟
- 延迟设置超时()
- 为什么即使 setTimeout 设置为 0 延迟也会有延迟
- 如何设置延迟
- javascript函数属性设置器中的延迟
- jQuery Banner Rotator插件中的延迟设置不起作用
- 我们如何在下拉子菜单中设置5秒的时间或延迟
- 在JS文件中设置延迟以调用JS文件
- 是否可能/如何像谷歌插件一样为jQuery自动完成设置延迟
- 在初始化之前设置延迟或超时
- 设置蓝鸟承诺分辨率.js最小延迟
- 如何停止来自设置间隔的延迟
- 设置超时动态延迟
- 在 JavaScript 中设置延迟时间
- 在 jquery 表单序列化变量中设置 jquery 延迟
- 从 html 数据设置 jquery 延迟
- 清除消息 jQuery 延迟设置超时
- 将执行延迟设置为窗口调整大小功能