一次显示/隐藏一个Javascript
Show/Hide Javascript one at a time
这可能很简单,但我不知所措。
我有两个锚点,它们切换自己的div容器的显示。现在,您可以通过单击每个按钮一次来显示两个div容器。我希望一次只显示一个div。
因此,如果选择按钮1来显示div 1,然后选择按钮2,它将显示div 2,但也隐藏div 1。
这是我的代码:
<script type="text/javascript" language="JavaScript">
function ReverseDisplay(d)
{
if(document.getElementById(d).style.display == "none")
{ document.getElementById(d).style.display = "block"; }
else
{ document.getElementById(d).style.display = "none"; }
}
</script>
<a id="menus" href="javascript:ReverseDisplay('menuList')">Button 1</a>
<a id="reso" href="javascript:ReverseDisplay('resoList')">Button 2</a>
<p>Some content</p>
<div id="menuList" style="display:none;">Some content</div>
<div id="resoList" style="display:none;">Some content</div>
给div的公共类
<div id="menuList" class="content" style="display:none;">Some content 1</div>
<div id="resoList" class="content" style="display:none;">Some content 2</div>
然后在显示特定之前隐藏所有内容:
function ReverseDisplay(d) {
[].slice.call(document.querySelectorAll('.content')).forEach(function(el) {
el.style.display = 'none';
});
var element = document.getElementById(d);
element.style.display = element.style.display == "none" ? "block" : "none";
}
查看下面的演示。
function ReverseDisplay(d) {
[].slice.call(document.querySelectorAll('.content')).forEach(function(el) {
el.style.display = 'none';
});
var element = document.getElementById(d);
element.style.display = element.style.display == "none" ? "block" : "none";
}
.content {
padding: 10px;
background: #EEE;
}
<a id="menus" href="javascript:ReverseDisplay('menuList')">Button 1</a>
<a id="reso" href="javascript:ReverseDisplay('resoList')">Button 2</a>
<p>Some content</p>
<div id="menuList" class="content" style="display:none;">Some content 1</div>
<div id="resoList" class="content" style="display:none;">Some content 2</div>
进一步挖掘,我找到了一个解决方案:
<script type="text/javascript" language="JavaScript">
(function() {
var opened_element = null;
window.ReverseDisplay = function(d) {
var e = document.getElementById(d);
if (opened_element && opened_element !== e) {
opened_element.style.display = 'none';
}
if(e.style.display == 'block') {
e.style.display = 'none';
}
else {
e.style.display = 'block';
}
opened_element = e;
};
}());</script>
您可以
function ReverseDisplay(d) {
var el = document.getElementById(d),
els = document.getElementsByClassName('list'),
c;
for (var i = 0; i < els.length; i++) {
c = els[i];
if (el == c) {
if (el.style.display == "block") {
el.style.display = "none";
} else {
el.style.display = "block";
}
} else {
c.style.display = "none";
}
}
}
.list {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a id="menus" href="javascript:ReverseDisplay('menuList')">Button 1</a>
<a id="reso" href="javascript:ReverseDisplay('resoList')">Button 2</a>
<p>Some content</p>
<div id="menuList" class="list">Some content 1</div>
<div id="resoList" class="list">Some content 2</div>
下面是jQuery,用于那些可以使用它的人:
function hideTarget(elem){
$(elem).hide();
}
function showTarget(elem, target, hideThis){
$(elem).click(function(){
$(target).show();
hideTarget(hideThis);
});
}
showTarget('#reso','#resoList','#menuList');
showTarget('#menus','#menuList','#resoList');
这是小提琴。
相关文章:
- 一次显示一个隐藏指令-AngularJS
- jQuery toogle-一个打开,另一个隐藏-在代码中的任何位置
- 两个提交按钮(一个隐藏,一个可见)
- 获取下一个或上一个隐藏元素的高度,以设置父元素的高度.jquery.
- 如果我们在5秒后有一个隐藏间隔,则无法获取Growl消息
- 将所有表单克隆到另一个隐藏元素的不同表单并提交
- Firefox插件开发,打开一个隐藏的网络浏览器
- 选择上一个隐藏元素
- 我在表单页面上有一个弹出窗口以及一个隐藏元素,具体取决于用户输入.两者都使用 jquery
- 验证表单,然后使用 jQuery 显示另一个隐藏表单
- 如果ID丢失,请使用jquery填充另一个隐藏字段中的行
- 获取隐藏输入的值,发送到另一个隐藏输入
- 如何在剑道网格中添加、更新或删除记录时添加一个隐藏字段
- 适用于Chrome,但不适用于Safari——这是一个隐藏的DIV,只在提交带有所有必需字段的表单时显示
- 我怎样才能做一个隐藏的
行,同时从json数据创建HTML表 - 将选中的dropDownList文本声明为一个隐藏字段,以便它可以与JS一起使用
- 如何获得文本包围的一个span标签,并保存到一个隐藏的输入值,当我点击跨度
- 在返回字符串的getter上有一个隐藏属性
- 点击显示一个隐藏所有其他JS或CSS或"切换"
- 我如何做一个隐藏的,浮动的加载Div在移动浏览器上点击后退按钮后再次从页面隐藏