我有一个名为opslaanMelding()
的函数在这个函数中我插入一个带有一些文本的div,我想在3秒后不显示它。 我认为另一个功能是刷新页面,所以超时不起作用
是否有任何想法等待此功能完成然后让他继续?
这是我的代码:
innerDiv.innerHTML = term;
innerDiv.className = 'className';
innerDiv.id = 'myId';
console.log(innerDiv.getWidth());
innerDiv.style.marginLeft = width- 80 + "px";
innerDiv.style.marginTop = "7px";
$('header').insert({after: innerDiv})
setTimeout(function() {
// display none after 3 secs
window.document.getElementById('myId').style.display = 'none';
},3000);
答案 0 :(得分:3)
任何等待此功能完成然后让他继续的想法
如果不锁定浏览器的用户界面(和/或收到“慢速脚本”错误),您无法阻止该函数返回三秒钟,这当然会阻止您的内容出现,因此不会对您执行任何操作想。
相反,让你的函数接受它在三秒钟启动时调用的回调,并将其后面的任何内容放入该回调中,而不是立即运行它。
,例如,而不是:
yourFunction();
doSomething();
doSomethingElse();
制作
yourFunction(function() {
doSomething();
doSomethingElse();
});
...并按如下方式修改您的功能:
function yourFunction(callback) { // **** Note the `callback` argument
innerDiv.innerHTML = term;
innerDiv.className = 'className';
innerDiv.id = 'myId';
console.log(innerDiv.getWidth());
innerDiv.style.marginLeft = width- 80 + "px";
innerDiv.style.marginTop = "7px";
$('header').insert({after: innerDiv})
setTimeout(function() {
// display none after 3 secs
window.document.getElementById('myId').style.display = 'none';
// *************** Do the callback
callback();
},3000);
}