2

ここでちょっと変わった振る舞いをしました。

(function(){
    var images=document.getElementsByTagName('img');
    for (var i = 0; i < images.length; i++) {
        images[i].parentNode.onclick = function () {
            var embed = "whatever";
            document.body.innerHTML = '<div id="overlay"><div class="game">' + embed + '</div></div>' + document.body.innerHTML;
            document.getElementById('overlay').onclick = function () { this.parentNode.removeChild(this); }
        }
    }
})();

このオフコースは単純化されたコードです。オーバーレイをクリックすると、オーバーレイ(およびコンテスト)が削除されます。しかし、画像のonclickevensはもう機能しません。なぜこれが起こっているのか分かりますか?

4

1 に答える 1

2

これは、次の行が原因です。

document.body.innerHTML = '...' + document.body.innerHTML;

ここでは、画像を含むすべての要素にバインドされているすべてのイベントを削除して、HTMLコンテンツを文字列として直接連結します。

プロパティを変更する代わりに、innerHTMLオーバーレイブロックを動的に作成し、その前に追加することをお勧めしますbody

于 2012-11-30T21:42:36.387 に答える