单击HTML除了一个元素,而不使用jQuery

时间:2012-04-06 23:19:38

标签: javascript html dom onclick

我告诉我们代码:

(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,谢谢:)

编辑:类似的东西:click on body except some other tag not working,但没有JQuery,

3 个答案:

答案 0 :(得分:3)

我不确定它会回答你的问题,但这里是:除了一个元素之外如何处理身体上的事件:

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 :(得分:0)

首先,您似乎无法在我能看到的任何地方定义tool

其次,您忘记了.style中的hideElement.display(应该是hideElement.style.display)。

第三,document.getElementsByTagName('html')[0]是多余的。只需使用document.documentElement代替。

答案 2 :(得分:0)

更改

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

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