2

コードを示します。

(function (){
  var element = document.getElementById('bar'), hideElement = document.getElementById('foo'),
  var html = document.getElementsByTagName('html')[0];
  tool.onclick = function() {
    hideElement.style.display = 'block';
    html.onclick = function() {
      hideElement.style.display = 'none';
    }
  }
})();

このコードは正常に機能しますが、html をクリックした後、非表示の要素を再度開くことができません。

html 要素をクリックして、display:none を hideElement に指定してから、要素 id="bar" をクリックして、非表示の要素 display:block に指定しますが、要素 foo をクリックする代わりに、html 要素をクリックします。私は何ができますか?

ああ、私はJQUERYなしで助けが必要です、ありがとう:)

編集:そのようなもの:他のタグが機能していないことを除いて本文をクリックしますが、JQueryなしで、

4

3 に答える 3

3

あなたの質問に答えるかどうかはわかりませんが、ここにあります: 1 つの要素を除いて、ボディでイベントを処理する方法:

document.documentElement.onclick = function(e) {
    var evt = e || window.event, // IE...
        target = evt.target || evt.srcElement // IE again...
    // There, "target" is the element clicked. See where I'm going?
    if (target.id !== "foo") {
        // Do w/e you want if the page was clicked, except for "foo"
    }
}

これが「イベントバブリング」のコンセプトです。1 つの要素とそのすべての子を一度にリッスンし、そこにあるコードで指定されたターゲットを取得できます。

于 2012-04-06T23:33:02.970 に答える
0

toolまず、あなたは私が見ることができるどこにも定義していないようです.

第二に、あなたは忘れてしまっ.stylehideElement.display(すべきであるhideElement.style.display)。

第三に、document.getElementsByTagName('html')[0]冗長です。document.documentElement代わりに使用してください。

于 2012-04-06T23:20:47.190 に答える
0

変化する

html.onclick = function() {
  hideElement.display = 'none';
}

html.onclick = function() {
  hideElement.style.display = 'none';
}
于 2012-04-06T23:21:50.013 に答える