我编写了这个简单的类来创建一个带有消息的 div 元素,该消息应该在给定时间后消失。这很好用,但是当使用它创建多条消息时,隐藏和销毁功能将仅适用于最后创建的消息。
这是我的课:
function message(text, duration){
var self = this;
function init(){
this.obj = document.createElement("div");
this.obj.setAttribute("class", "message");
this.obj.appendChild(document.createTextNode(text));
document.body.appendChild(this.obj);
setTimeout(function(){self.display.call(this);}, 20);
setTimeout(function(){self.hide.call(this);}, duration);
setTimeout(function(){self.destroy.call(this);}, duration+1000);
}
this.display = function(){
this.obj.setAttribute("class", "message display");
}
this.hide = function(){
this.obj.setAttribute("class", "message gone");
}
this.destroy = function(){
document.body.removeChild(this.obj);
}
init();
}
这有效:
new message("This will be removed in 5 seconds.", 5000);
这不起作用:
new message("This will not be shown", 2000);
new message("This will be removed after 2 seconds", 5000);
可能有一些参考错误,但我无法发现任何错误。