Javascript 当我在IE11中显示另一个内容时,如何通过在其区域外单击来隐藏当前内容?

Javascript 当我在IE11中显示另一个内容时,如何通过在其区域外单击来隐藏当前内容?,javascript,Javascript,单击按钮可显示和隐藏相应的内容 函数funC(id){ var el=document.getElementById(id); 如果(el.style.display=='inline block') el.style.display=''; 其他的 el.style.display='inline block'; } 按钮{边距:2px;轮廓:0;字体大小:12px;} span{填充:2px;边框:1px纯银; 字体大小:12px;} .cb{display:none;} b1内容b1。。

单击按钮可显示和隐藏相应的内容

函数funC(id){
var el=document.getElementById(id);
如果(el.style.display=='inline block')
el.style.display='';
其他的
el.style.display='inline block';
}
按钮{边距:2px;轮廓:0;字体大小:12px;}
span{填充:2px;边框:1px纯银;
字体大小:12px;}
.cb{display:none;}
b1内容b1。。。

B2B2内容。。。

b3内容b3…
这可能不是一个完美的解决方案,但这里有一个建议:

函数hidealcontent(){
var元素=document.queryselectoral(“.cb”);
for(var i=0,l=elements.length;i
按钮{边距:2px;轮廓:0;字体大小:12px;}
span{填充:2px;边框:1px纯银;
字体大小:12px;}
.cb{display:none;}
b1内容b1。。。

B2B2内容。。。
b3内容b3…
  • 没有内联点击连接
  • 没有ID使用
  • 为IE 11使用向后兼容的语法
//JavaScript
//获取所有按钮和范围标记
var btns=document.querySelectorAll('button');
var otherspan=document.queryselectoral('span');
//检测文档上的所有单击
document.addEventListener(“单击”),函数(事件){
const spanElems=document.queryselectoral('span');
const spanElemsArray=Array.prototype.slice.call(spanElems);
让matches=event.target.matches?event.target.matches('button'):event.target.msMatchesSelector('button');
//如果用户在元素内部单击,则不执行任何操作
如果(匹配){
返回;
}否则{
//如果用户在元素外部单击,请将其隐藏!
spanelemArray.forEach(函数(spanElem){
spanElem.classList.remove(“打开”);
});
}
});
//将按钮和跨距变量对象转换为数组
const btnsArray=Array.prototype.slice.call(BTN);
const otherSpansArray=Array.prototype.slice.call(otherSpans);
//循环浏览每个按钮,并为每个按钮指定一次单击
forEach(函数(btn){
btn.addEventListener('click',spanFunc)
});
//将单击的按钮作为参考传递
函数spanFunc(){
openSpan(this);
}
//使用nextElementSibling方法在按钮旁边的范围上切换显示类
函数openSpan(e){
e、 nextElementSibling.classList.toggle(“打开”);
//每隔一段时间隐藏一次
函数otherSpanFunc(){
otherSpansArray.forEach(函数(otherSpan){
if(otherSpan!==e.nextElementSibling){
otherSpan.classList.remove('open');
}
});
}
otherSpanFunc();
}
/*css*/
按钮{边距:2px;轮廓:0;字体大小:12px;}
span{填充:2px;边框:1px纯银;
字体大小:12px;}
.cb{显示:无;}
.open{display:inline block;}

b1内容b1。。。

B2B2内容。。。

b3content b3…
谢谢你,Sam。但是在IE 11.0浏览器中不起作用。谢谢你,Sam。在IE11.0中起作用,但是为什么内容没有像最初那样通过点击按钮隐藏起来?嘿,因为这是纯JavaScript操作,我看不出备份历史在这里起作用的任何原因。不过,我想仍然可以通过history api对其进行操作(也许您可以查看一下)。无论如何,希望你能找到你需要的:)而且微软已经停止提供对Internet Explorer的支持,除了基本的安全更新,并且现在正专注于Microsoft Edge,所以强烈建议现在转向标准浏览器Arsen.dam。那太令人失望了。希望这里的其他人能找出上面代码中的错误。CheersHi@AndrewL,
spanElems
不是一个真正的数组,它是一个节点列表。我不认为你可以在IE11中使用
forEach
。多亏了Sam的帮助,更新后的代码现在应该可以在IE11中正常工作了。很高兴我们可以帮助Arsen。请投票表决我们的答案,并勾选解决方案,以帮助其他用户长期解决同一问题:)干杯!