在前端開發(fā)中,tab切換是一種常見的效果,大家經(jīng)常會使用jQuery等庫來實現(xiàn)。但實際上,也可以通過純javascript實現(xiàn)這個效果,甚至比使用jQuery等庫更加便捷。
例如,我們現(xiàn)在有三個tab標簽,分別為“tab1”、“tab2”、“tab3”,當我們點擊對應的標簽時,顯示對應內容,其余內容則隱藏。我們可以通過addEventlistener方法監(jiān)聽點擊事件,再通過改變對應的CSS樣式來實現(xiàn)這個效果。
var tab1 = document.getElementById('tab1'),
tab2 = document.getElementById('tab2'),
tab3 = document.getElementById('tab3'),
content1 = document.getElementById('content1'),
content2 = document.getElementById('content2'),
content3 = document.getElementById('content3');
tab1.addEventListener('click', function() {
content1.style.display = 'block';
content2.style.display = 'none';
content3.style.display = 'none';
});
tab2.addEventListener('click', function() {
content1.style.display = 'none';
content2.style.display = 'block';
content3.style.display = 'none';
});
tab3.addEventListener('click', function() {
content1.style.display = 'none';
content2.style.display = 'none';
content3.style.display = 'block';
});
以上代碼中,我們分別獲取了三個tab標簽和對應的內容節(jié)點。然后通過addEventListener方法為這三個標簽添加了點擊事件的監(jiān)聽函數(shù)。當點擊對應標簽時,我們將其對應的內容的display屬性設置為‘block’,同時將其余的內容隱藏起來。這樣,就實現(xiàn)了一個簡單的tab切換效果。
除此之外,在實際的開發(fā)中,我們還可以使用閉包等技巧來簡化代碼,增加代碼的可讀性和可維護性。var tabs = document.querySelectorAll('.tab'),
contents = document.querySelectorAll('.content');
for (var i = 0; i< tabs.length; i++) {
(function(j) {
tabs[j].addEventListener('click', function() {
for (var k = 0; k< contents.length; k++) {
contents[k].style.display = 'none';
}
contents[j].style.display = 'block';
});
})(i);
}
以上代碼中,我們使用了querySelectorAll方法獲取了所有的tab標簽和內容節(jié)點。然后通過for循環(huán)為每個標簽添加了點擊事件的監(jiān)聽函數(shù)。在這個函數(shù)中,我們使用了閉包,將當前循環(huán)的索引保存在變量j中。
當點擊對應的標簽時,我們通過for循環(huán)將所有的內容隱藏,然后將對應的內容顯示。這樣,即使tab標簽和內容節(jié)點數(shù)量增多,我們也不需要去修改函數(shù)本身,只需要在HTML中添加對應的標簽和節(jié)點即可。
總的來說,使用純javascript實現(xiàn)tab切換效果可以大大減小代碼的體積,同時提高代碼的可維護性。當然,如果項目依賴較多,如需要使用AJAX獲取更多的數(shù)據(jù)等,考慮到開發(fā)效率,我們也可以使用jQuery等庫來快速實現(xiàn)這個功能。上一篇css圖片不讓它亂動
下一篇python矩陣中的元素