簡體   English   中英

在javascript中,對象如何自我破壞事件?

[英]How can a object self destruct on an event, in javascript?

我具有此功能,可以即時創建DIV。 但是現在,我想在onclick事件中銷毀該對象,但是我只是不知道如何。

function creatediv(id) {

    var newdiv = document.createElement('div');
    newdiv.setAttribute('id', id);
    newdiv.onclick=function(){this=null;};  //bad function
    document.body.appendChild(newdiv);

} 

我想念什么?

謝謝

僅將其設置為null不會破壞它。 您需要從文檔樹中刪除它,同時確保沒有指向它的引用。

function creatediv(id) {
    var newdiv = document.createElement('div');
    newdiv.setAttribute('id', id);
    newdiv.onclick=function(e) {
        this.parentNode.removeChild(this);
    };  
    document.body.appendChild(newdiv);
    newdiv = null;//required in IE to prevent memory leak
}

接受的答案對我來說似乎是錯誤的。 首先,它不考慮newdiv包含子節點,因此建議的remove例程通過閉包(IE)維護了內存泄漏的危險。 其次,由於'newdiv = null'的位置,creatediv函數立即破壞了剛創建的元素。 我建議將Douglas Crockfords 清除功能用於單擊處理程序,並用d代替。

function purge(d) {
    var a = d.attributes, i, l, n;
    if (a) {
        l = a.length;
        for (i = 0; i < l; i += 1) {
            n = a[i].name;
            if (typeof d[n] === 'function') {
                d[n] = null;
            }
        }
    }
    a = d.childNodes;
    if (a) {
        l = a.length;
        for (i = 0; i < l; i += 1) {
            purge(d.childNodes[i]);
        }
    }
}
function removeElement(divNum) {
  var d = document.getElementById('myDiv');
  var olddiv = document.getElementById(divNum);
  d.removeChild(olddiv);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM