显示/隐藏以作为手风琴工作

Posted

技术标签:

【中文标题】显示/隐藏以作为手风琴工作【英文标题】:Show/hide to work as accordian 【发布时间】:2014-07-03 12:28:24 【问题描述】:

我正在尝试运行代码以单击链接并打开 div。如果我点击另一个链接,上面的链接应该被关闭。点击的应该是一个。

我不能使用 jquery 或除 javascript 或 dojo 之外的任何其他东西。我不知道dojo,但是javascript。

我正在尝试这样:

<ul id="sm">
    <li><a href="javascript:void(0);" onclick="toggle_visibility('s');">abc</a></li>
    <li><a href="javascript:void(0);" onclick="toggle_visibility('sa');">xyz</a></li>
    <li><a href="javascript:void(0);" onclick="toggle_visibility('ss');">def</a></li>
    <li><a href="javascript:void(0);" onclick="toggle_visibility('sd');">efg</a></li>
    <li><a href="javascript:void(0);" onclick="toggle_visibility('sfd');">Ter</a></li>
</ul>

我正在使用的JS代码

function toggle_visibility(id) 
    var e = document.getElementById(id);
    e.style.display = ((e.style.display!='none') ? 'none' : 'block');

提供 Div 为:

<div id="s" style="display:none"></div>
<div id="sa" style="display:none"></div>
<div id="ss" style="display:none"></div>

一旦我点击它们,它们就会重叠

【问题讨论】:

您不能使用 jQuery 有什么特殊原因吗?因为使用 jQuery 会非常简单。 什么是 div?你有什么问题?真正的问题在哪里? 客户端不支持jquery,他想使用dojo或javascript plain 编辑问题以添加 div 好的,您已经添加了 div,但是与订单项的代码相关的 div 在哪里? 【参考方案1】:

请尝试以下示例。希望对你有帮助.....:)

<html>
<head>
<style>
.head 
    border:1px solid #666;
    background-color:#f0f0f0;
    padding:3px;
    cursor:pointer;

.content 
    border:1px solid #666;
    background-color:#fff;
    height:100px;
    padding:3px;

</style>
<script type="text/javascript">
function hideShoowTab(ctb) 
    var ptb = document.getElementById("ptbname").value
    if(document.getElementById("ptbname").value=="") 
        document.getElementById("content"+ctb).style.display="block";
    
    else if(ptb==ctb) 
        if(document.getElementById("content"+ctb).style.display=="block") 
            document.getElementById("content"+ctb).style.display="none";
        
        else 
            document.getElementById("content"+ctb).style.display="block";
        
    
    else 
        document.getElementById("content"+ptb).style.display="none";
        document.getElementById("content"+ctb).style.display="block";
    
    document.getElementById("ptbname").value=ctb;

</script>
</head>
<body>
    <div>
        <div id="head1" class="head" onclick="hideShoowTab('1')">Head 1</div>
        <div id="content1" class="content">Content 1</div>
    </div>
    <div>
        <div id="head2" class="head" onclick="hideShoowTab('2')">Head 2</div>
        <div id="content2" class="content" style="display:none;">Content 2</div>
    </div>
    <div>
        <div id="head3" class="head" onclick="hideShoowTab('3')">Head 3</div>
        <div id="content3" class="content" style="display:none;">Content 3</div>
    </div>
    <input type="hidden" id="ptbname" name="ptbname" value="1" />
</body>
</html>

【讨论】:

我没有测试过你的答案,但你能解释一下为什么这行得通吗? (假设确实如此)。代码只有在被理解的情况下才有用。 上面的例子很容易理解。您只需注意每个 div id,在 onclick 事件上调用 javascript 函数时传递的参数,并注意 javascript 函数逻辑。要测试上面的示例,只需复制代码并将其保存在空白记事本中,然后以 .html 扩展名保存文件并在任何浏览器中运行。 我很清楚如何测试上述代码,我的要求不是针对我,而是为了遵循网站的指导方针。例如,请参阅 Jon Skeet(该网站的主要用户之一)的这篇文章:msmvps.com/blogs/jon_skeet/archive/2009/02/17/… 特别注意这一行:“然而,没有解释的代码很少有用。至少提供一两句话来解释发生了什么。 " 好的,谢谢艾弗里。我理解并尝试按照您的建议。

以上是关于显示/隐藏以作为手风琴工作的主要内容,如果未能解决你的问题,请参考以下文章

基于jQuery制作的手风琴折叠菜单

试图限制手风琴内动态生成的行列表以滚动显示在固定高度的卡片中

引导面板边框未正确显示

在选项卡更改时隐藏手风琴

JS实现手风琴效果

手风琴效果隐藏式课程首页 很赞