无法删除Javascript中的div

无法删除Javascript中的div,javascript,Javascript,我试图删除Javascript中的一个div,但它不起作用。我的控制台中没有错误,但函数确实被调用了 我不明白我做错了什么,所以我希望有人能解释一下。这就是它的工作原理: function menu_load(type){ document.getElementById(type).onclick = function(){ menu_unload(type); } var width = 100; var height = 100; var d = document.creat

我试图删除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');
}

这里有我遗漏的错误吗?我就是解不出这个问题。

如果我更正以下行,您的代码对我有效:

document.getElementById(type).onclick = menu_load(type);
它错误地调用
菜单\u load()
,并尝试将结果分配给
。onclick
。这应该和你在其他函数中做的一样

document.getElementById(type).onclick = function() { menu_load(type); };
演示:


老实说,我不知道为什么要修复它,因为您的代码实际上不是语法错误,而是因为它调用了
menu\u load()
它重新创建了刚刚删除的div。而
.removeChild()
行应该首先出现,但无论如何…

您说“函数”确实会被调用。你是说
menu\u unload
还是仅仅
menu\u load
?两者都是,当我附加时,它加载div,我的警报显示为
menu\u unload
,用
onclick
将你的
alert
调用放在
menu\u unload
的末尾,看看它是否仍然被调用。我创建了一个带有较小测试用例的JSidle,而且它是有效的。。。也许会有帮助。您肯定应该使用jQuery。它真的很棒,做所有的事情+1,但是@“我不知道为什么会修复它”,这是因为调用
菜单\u load
会创建一个新的
,它完全相同,所以你无法用肉眼区分。啊,谢谢@PaulS。-即使我说“[这个]调用
菜单\u load()
”,我也没有想清楚。我会更新我的答案。@PaulS.-谢谢你,伙计,你搞定了。你应该把它作为一个答案。啊,它是这么做的,但马上又重新创造了它?@Igor尽管我很喜欢这个名声,但我认为没有必要再提出一个新的答案,因为这个答案充分涵盖了解决方案。