gpt4 book ai didi

javascript - setTimeout 函数在弹出窗口中不起作用

转载 作者:行者123 更新时间:2023-12-02 17:14:56 25 4
gpt4 key购买 nike

我有一个弹出窗口,应该提醒您在 10 秒内该弹出窗口将关闭,它显示弹出窗口,但 setTimeout 不起作用,它通过单击按钮关闭,但它本身在 10 秒内不会关闭。我做错了什么?我尝试单独设置 setTimeout 函数,或者通过字符串设置,但没有任何效果。

P.s:我知道我可以用警报来做到这一点,但它看起来不像弹出窗口那么漂亮:)

function myPop() { 
this.square = null;
this.overdiv = null;
this.popIn = function() {
if (this.square != null) {
document.body.removeChild(this.square);
//setTimeout('alert("прошла секунда")', 10000);
this.square = null;
}
if (this.overdiv != null) {
document.body.removeChild(this.overdiv);
//setTimeout('alert("прошла секунда")', 10000);
this.overdiv = null;
}
}
this.popOut = function(msgtxt) {
//filter:alpha(opacity=25);-moz-opacity:.25;opacity:.25;
this.overdiv = document.createElement("div");
this.overdiv.className = "overdiv";

this.square = document.createElement("div");
this.square.className = "square";
this.square.Code = this;
var msg = document.createElement("div");
msg.className = "msg";
msg.innerHTML = msgtxt;

this.square.appendChild(msg);
// var closebtn = document.createElement("button");
/**closebtn.onclick = setTimeout(function(){
this.parentNode.Code.popIn();},10000);*/

setTimeout(function() {
this.parentNode.Code.popIn();},10000);


//closebtn.innerHTML = "Жабу";
//this.square.appendChild(closebtn);

document.body.appendChild(this.overdiv);
document.body.appendChild(this.square);
}
}

任何帮助将不胜感激

最佳答案

setTimeout 中的回调函数正在访问不正确的 this。在 setTimeout 中,this 将引用 Window。窗口没有父节点。试试这个:

var that = this;
setTimeout(function() {
that.parentNode.Code.popIn();
}, 10000);

关于javascript - setTimeout 函数在弹出窗口中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com