使用Javascript隐藏和显示divID-打开新标题时隐藏
目前,我可以点击一个标题,然后显示与标题相关的信息。如果选择了另一个标题,则会在上一个打开的标题下方或上方打开该标题,如果再次单击该标题,则会将其隐藏。使用Javascript隐藏和显示divID-打开新标题时隐藏,javascript,html,Javascript,Html,目前,我可以点击一个标题,然后显示与标题相关的信息。如果选择了另一个标题,则会在上一个打开的标题下方或上方打开该标题,如果再次单击该标题,则会将其隐藏。 我想做的是,如果一个标题已经打开,单击另一个标题时,它会隐藏上一个标题并显示最近单击的标题 我目前使用的javascript如下 <script type="text/javascript"> function unhide(divID) { var item = document.getElementById(divID
我想做的是,如果一个标题已经打开,单击另一个标题时,它会隐藏上一个标题并显示最近单击的标题 我目前使用的javascript如下
<script type="text/javascript">
function unhide(divID) {
var item = document.getElementById(divID);
if (item) {
item.className=(item.className=='hidden')?'unhidden':'hidden';
}
}
function hide(divID) {
var item = document.getElementById(divID);
if (item == 'element_name') {
item.className=(item.className=='hidden');
}
}
函数取消隐藏(divID){
var item=document.getElementById(divID);
如果(项目){
item.className=(item.className='hidden')?'unhidden':'hidden';
}
}
函数隐藏(divID){
var item=document.getElementById(divID);
如果(项目=='元素名称'){
item.className=(item.className='hidden');
}
}
<>代码> 为什么不考虑使用标签
我希望这就是你希望做的
您可以在说明中看到可用的主题化选项。如果你想改变它的基础CSS 建议1,你可以考虑看看。
为所有标题元素指定一个公共类名,例如title
,然后使用document.getElementsByClassName('title')
查找所有标题元素,如果单击的标题元素被隐藏,则在“取消隐藏”单击的标题之前将其全部隐藏
也就是说,您需要修改您编写的两个函数以适应元素中的多个类。您可以通过element.className='unhidden title'
轻松设置多个类名,但您的代码将非常不灵活。当您试图通过String#split
方法修改类名列表时,您的代码将很快变得笨拙,并在类中循环查找和删除隐藏或未隐藏的类
建议2
不要使用未隐藏的类。假定您的unhidden类定义如下:
.unhidden {
display: block;
}
如果您还有内联元素要取消隐藏,因为您需要另一个类,则该类将变得不太有用:
.unhidden-inline {
display: inline;
}
如果您仅定义:
.hidden {
display: block;
}
并添加或删除隐藏类以隐藏或显示元素,这样就可以完全避免此问题。但是,您仍然会遇到在一个元素中处理多个类名的问题
建议#3(理想)
使用或处理DOM遍历和操作,将使您的生活更加轻松。在这种情况下,您将不再需要操纵类,只需使用方便的方法直接隐藏和显示元素即可。包括jQuery:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
假设以下标记:
<ul>
<li class="title">
Title 1
<div class="description">Best. Title. Ever.</div>
</li>
<li class="title">
Title 2
<div class="description">Second best title</div>
</li>
<li class="title">
Title 3
<div class="description">Worst. Title. Ever.</div>
</li>
</ul>
-
标题1
最好的。标题曾经
-
标题2
第二名
-
标题3
最差的标题曾经
以及以下css:
<style type="text/css">
.description {
display: none;
}
</style>
.说明{
显示:无;
}
您可以通过以下方式灵活实现目标:
<script type="text/javascript">
$('.title').click(function(event){
currentDescriptionElement = $('.description', this); // this refers to the clicked DOM element in this context
isHidden = currentDescriptionElement.is(':hidden');
$('.title .description:visible').hide(); // hide all visible description elements
if (isHidden)
currentDescriptionElement.show();
})
</script>
$('.title')。单击(函数(事件){
currentDescriptionElement=$('.description',this);//这是指在此上下文中单击的DOM元素
isHidden=currentDescriptionElement.is(“:hidden”);
$('.title.description:visible').hide();//隐藏所有可见的描述元素
如果(isHidden)
currentDescriptionElement.show();
})
我希望这有帮助,祝你好运 您可以尝试以下方法:
<script type="text/javascript">
function unhide(divID) {
var item = document.getElementById(divID);
if (item) {
document.getElementById(divID).style.display = 'block';
}
}
function hide(divID) {
var item = document.getElementById(divID);
if (item) {
document.getElementById(divID).style.display = 'none';
}
}
</script>
函数取消隐藏(divID){
var item=document.getElementById(divID);
如果(项目){
document.getElementById(divID).style.display='block';
}
}
函数隐藏(divID){
var item=document.getElementById(divID);
如果(项目){
document.getElementById(divID).style.display='none';
}
}
您必须根据您的呼叫传递divid 您需要配置另一个函数,比如hideall(),在调用unhide()之前需要调用该函数,首先关闭所有打开的,然后仅取消隐藏单击的内容。您不需要隐藏(),只需要隐藏()非常感谢您的帮助。