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 に答える