3

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

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

4

1 回答 1

5

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

document.getElementById(type).onclick = menu_load(type);

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

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

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

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

于 2012-12-16T02:36:16.970 回答