我想單擊時切換div元素(展開/摺疊)。 我有很多div元素,點擊新元素,我想摺疊前一個並展開當前點擊的元素。用JavaScript切換元素
我嘗試使用靜態類型變量來保存以前的div標記的實例,並與當前的選擇進行比較,但我不知道爲什麼它不工作。
尋找這個,我得到了類似的代碼想法,以收回所有股利,然後擴大當前選擇只,但我想只是切換新的一個,而不是摺疊所有股利和擴大選定(雖然我會如果其他方式不可能使用它)
可以使用js的靜態變量來完成嗎?
我想單擊時切換div元素(展開/摺疊)。 我有很多div元素,點擊新元素,我想摺疊前一個並展開當前點擊的元素。用JavaScript切換元素
我嘗試使用靜態類型變量來保存以前的div標記的實例,並與當前的選擇進行比較,但我不知道爲什麼它不工作。
尋找這個,我得到了類似的代碼想法,以收回所有股利,然後擴大當前選擇只,但我想只是切換新的一個,而不是摺疊所有股利和擴大選定(雖然我會如果其他方式不可能使用它)
可以使用js的靜態變量來完成嗎?
簡單地說,你可以簡單地做這樣的事情:
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]);
}
這會將當前元素存儲在變量中,然後在單擊另一個元素時將其切換。它還使用if
語句來檢查當前點擊的元素是否是當前可見的元素,並且僅在不是時才切換。
在這裏看到一個工作演示:http://jsfiddle.net/GaxvM/
感謝這對我有用。 – bunkdeath 2011-03-06 08:16:37
@bunkdeath在Stack Overflow上,當答案幫助您解決問題時,您可以通過單擊答案一側的綠色複選標記來「接受」它。這獎勵那些回答你的問題,並標記你的問題解決。 – 2011-03-07 10:16:14
您可以爲每個元素分配一個唯一的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);
}
有什麼反對使用jQuery的? – Orbit 2011-03-05 22:17:29
我第二次使用[jQuery](http://jquery.com)。它速度很快,在各種瀏覽器中運行良好,而且非常容易學習。 – 2011-03-05 23:04:13