使用JavaScript切换元素

使用JavaScript切换元素,javascript,html,Javascript,Html,我想在单击时切换div元素(展开/折叠)。 我有很多div元素,在单击新元素时,我想折叠上一个元素并展开当前单击的元素 我尝试使用静态类型变量保存上一个div标记的实例,并与当前选择进行比较,但我不知道为什么它不起作用 搜索这一点,我得到了类似的代码思想,折叠所有div,然后仅展开当前选定的,但我只想用新的切换上一个,而不是折叠所有div,然后展开选定的(尽管如果其他方式不可能,我会使用它) 可以使用js的静态变量来完成吗?您可以为每个元素分配一个唯一的ID,并使用document.getEle

我想在单击时切换div元素(展开/折叠)。 我有很多div元素,在单击新元素时,我想折叠上一个元素并展开当前单击的元素

我尝试使用静态类型变量保存上一个div标记的实例,并与当前选择进行比较,但我不知道为什么它不起作用

搜索这一点,我得到了类似的代码思想,折叠所有div,然后仅展开当前选定的,但我只想用新的切换上一个,而不是折叠所有div,然后展开选定的(尽管如果其他方式不可能,我会使用它)


可以使用js的静态变量来完成吗?

您可以为每个元素分配一个唯一的ID,并使用document.getElementById来标识这两个元素,然后折叠其中一个/展开另一个

如果按顺序对它们进行编号(如div1、div2、div3等),可以执行以下操作:

function colexp(div_id){
     div_2_collapse = document.getElementById(div_id);
     next_div = div_id.substr(0,3) + parseInt(div_id.substr(3))+1;
     div_2_expand = document.getElementById(next_div);
     hide(div_2_collapse);
     show(div_2_expand);
}

在最简单的情况下,您可以简单地执行以下操作:

var divs = document.getElementsByTagName('div'),
    collapseClass = 'collapsed',
    current = divs[0];

// Hide all elements except first, add click event hander
for(var i = 0, len = divs.length; i < len; i++){
    divs[i].onclick = function(){
        if(this !== current){
            toggle(this, current);
            current = this;
        }
    };

    if(i > 0) toggle(divs[i]);
}
var divs=document.getElementsByTagName('div'),
collapseClass=‘折叠’,
电流=divs[0];
//隐藏除“第一个”、“添加”和“单击事件处理程序”之外的所有元素
对于(变量i=0,len=divs.length;i0)切换(divs[i]);
}
这将在变量中存储当前元素,然后在单击另一个元素时切换它。它还使用
if
语句检查当前单击的元素是否是当前可见的元素,并且仅在其不是时进行切换


请参见此处的工作演示:

有任何反对使用jquery的地方吗?我会再次使用。它速度快,跨浏览器运行良好,而且非常容易学习。@bunkdeath On Stack Overflow,当答案帮助您解决问题时,您可以通过单击答案旁边的绿色复选标记来“接受”它。这将奖励那些回答您问题的人,并将您的问题标记为已解决。