我有一个模态对象,可以在创建DOM元素时创建它。 我想知道当用户在对象上调用“删除”时是否可以删除节点。类似的东西:
var modal = function (options) {
var domHolder = null;
function build() {
domHolder = document.createElement("div");
//construct a modal window inside the element...
};
this.ondelete = function() {
domHolder.parentNode.removeChild(domHolder);
}
build();
};
//destruct the object and remove the nodes
var myModal = new modal();
delete myModal;
答案 0 :(得分:1)
delete不会触发onDeleteEvent,delete是一个运算符;
删除操作符从对象中删除属性。
你应该调用ondelete方法从DOM中删除元素。
var myModal = new modal();
myModal.ondelete() ;
JavaScript自动被垃圾收集;只有当Garbage Collectior决定运行并且该对象符合该条件时,才会回收该对象的内存。
删除操作符与直接释放内存无关(它只通过断开引用间接进行)。有关详细信息,请参阅memory management页面。
答案 1 :(得分:1)
你可以这样解决:
自行调用删除功能,而不是删除操作符
(我编辑了代码以进行一些清理。)
09

var modal = function (options) {
var domHolder = null;
function build() {
domHolder = document.createElement("div");
domHolder.innerHTML = "yes";
document.getElementById("test").appendChild(domHolder);
};
this.delete = function() {
domHolder.parentNode.removeChild(domHolder);
delete domHolder;
// delete ... other objectsthat can be released, ...
// ... so that the instance can be garbage collected
}
build();
};
//destruct the object and remove the nodes
var myModal = new modal();
document.getElementById("clear").addEventListener("click", function(){
myModal.delete();
})