Heim > Fragen und Antworten > Hauptteil
Zum Beispiel der folgende Code
var box = document.getElementById("box");
box.onclick = function(){
console.log(111);
};
box = null;
Warum kann ich immer noch das Klickereignis der Box auslösen, wenn ich den Wert der Box auf Null weise? Was ich denke ist, dass die Verarbeitung des Ereignisses nichts mit der Box selbst zu tun hat, obwohl der Box später Null zugewiesen wird, da das Ereignis hinzugefügt wurde? Ich weiß nicht, ob das richtig ist. Warum kann ich box.onclick einfach null zuweisen? Ich hoffe, ihr könnt mir eine vernünftige Antwort geben, danke.
phpcn_u15822017-05-19 10:35:15
这里的box只是一个变量
var box = document.getElementById("box");
这里是将"box"元素的引用赋值给box,你下面的box = null
是把null
赋值给box对"box"元素并没有影响,建议看一下这篇文章
可能我说的不是很清楚,见谅。
过去多啦不再A梦2017-05-19 10:35:15
var box = document.getElementById("box");//生成一个box指针, 指向element
box.onclick //element绑定点击事件
box = null; // 清空指针 与element无关
PHPz2017-05-19 10:35:15
你只是把"小明"这个外号给了另一个人, 但你对原来的"小明"所造成的伤害还在...
作为一个老司机, 我必须纠正你的洗白步骤:
1, 首先掩盖你的罪恶
box.onclick = null;
2, 看情况要不要毁尸灭迹
box = null;
或
box.parentNode.removeChild(box);
阿神2017-05-19 10:35:15
实际上box只是指向DOM元素的一个“指针”。
你对box的属性做操作会影响DOM元素,但是当你把它赋值为null时,只是把box的指向改变了,不表示把DOM元素清除了。