无法在Javascript中删除div

Sir*_*Sir 3 javascript

我正在尝试删除Javascript中的div但是"它不起作用.我的控制台中没有错误,但函数确实被调用了.

我不明白我做错了什么,所以我希望有人可以解释.这是它的工作原理:

function menu_load(type){
  document.getElementById(type).onclick = function(){ menu_unload(type); }
  var width = 100;
  var height = 100;
  var d = document.createElement('div');
  d.id = 'menu';
  d.className = 'menu';
  d.style.width = width + 'px';
  d.style.height = height + 'px';
  document.getElementById('G').appendChild(d);
}

function menu_unload(type){
  alert('test'); //this displays
  var div = document.getElementById("menu");
  div.parentNode.removeChild(div); // doesn't remove the div
  document.getElementById(type).onclick = menu_load(type);
}

window.onload = function(){
  menu_load('test');
}
Run Code Online (Sandbox Code Playgroud)

这里有什么错误我错过了吗?我只是无法解决问题.

nnn*_*nnn 5

如果我更正以下行,您的代码将适用于我:

document.getElementById(type).onclick = menu_load(type);
Run Code Online (Sandbox Code Playgroud)

哪个错误地调用menu_load()并尝试将结果分配给.onclick.它应该像你在其他功能中所做的那样

document.getElementById(type).onclick = function() { menu_load(type); };
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/MCZza/

说实话,我不知道为什么这会修复它,因为你的代码实际上并不是语法错误,而是因为它调用 menu_load() 它重新创建了刚删除的div. 这.removeChild()条线应该先发生,但无论如何......

  • +1,但是@"我不知道为什么会修复它",这是因为调用`menu_load`正在创建一个完全相同的新的`<div>`,所以你不能用眼睛来区分它们. (6认同)
  • @Igor和我喜欢的名声一样,我不认为有必要给出新答案,因为这个问题充分涵盖了解决方案. (2认同)