我告诉我们代码:
(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,
答案 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';
}