Javascript 单击除一个元素之外的HTML,而不使用jQuery
我向我们展示代码:Javascript 单击除一个元素之外的HTML,而不使用jQuery,javascript,html,dom,onclick,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'; ht
(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元素并给hideElement指定display:none,然后单击元素id=“bar”,给隐藏的元素display:block,但是不要单击元素foo,而是单击html元素。我能做什么
哦,我需要没有JQUERY的帮助,谢谢:)
编辑:类似这样的内容:,但如果没有JQuery,首先,您似乎不会在我能看到的任何地方定义
工具
其次,您在hideElement.display
中忘记了.style
(应该是hideElement.style.display
)
第三,document.getElementsByTagName('html')[0]
是多余的。只需使用document.documentElement
即可。更改
html.onclick = function() {
hideElement.display = 'none';
}
到
我不确定它是否能回答你的问题,但这里是:如何处理身体上的事件,除了一个元素:
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"
}
}
这就是“事件冒泡”的概念。您可以一次侦听一个元素及其所有子元素,并按照上面代码中的指定获取目标。是否输入错误hideElement.display
而不是hideElement.style.display
?这只是一个错误,但这不是我需要的。这个错误足以打破它。编程中没有“只是一个错误”这回事。很高兴它适合你。但要注意跨浏览器兼容性。在一个完美的世界里,var target=e.target
就足够了。但是IE不喜欢将e
作为参数传递(因此我们使用window.event
),而FF的旧版本不喜欢evt.target
(因此我们使用evt.srcement
)。e.srcement
应该是evt.srcement
,并且.srcement
是IE属性,而不是FF。很确定FF总是有.target
.Oops,打字错误。我对srcElement
的看法不好!你确实是对的:)我建议为evt
的存在添加一个if块。我今天在歌剧中被这句话咬了一口。你能把我的答案编辑一下添加进去吗?我不知道该在哪里添加这个。
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"
}
}