前幾天有個同事遇到了一個javascript的問題,據說已經困擾了她好多天。
條件是這樣的:
1.有兩個的TAB,每個TAB下各有一個滑動表單。
2.滑動表單在兩頁以上,每頁以一個iphone螢幕為準(320px)。
3.畫動表單顧名思義必須可以滑動(橫向)。
4.不能使用jQuery
因為第四點,所以我介紹給她的這個方式就變得不可行。然後她自己去找了另一個js來套用:swipejs。只是她的問題出在於因為TAB的寫法也是google來的,所以,沒有辦法把兩個js做很好的結合。
於是我幫他改完後,程式就變成這樣:
HTML
<ul id="btnTab"> <li class="selected"><a href="#TAB1">TAB1</a></li> <li><a href="#TAB2">TAB2</a></li> </ul> <div id="DataSelect" class="clearfix"> <!-- ▼▼TAB1▼▼ --> <div id="TAB1"> <div id="TAB1Slider"> <ul> <!-- ▼表單1-第1頁▼ --> <li> <h4 class="titleL">表單1-第1頁</h4> <table> </table> <table> </table> </li> <!-- ▲表單1-第1頁▲ --> <!-- ▼表單1-第2頁▼ --> <li> <h4 class="titleC">表單1-第2頁</h4> <table> </table> <table> </table> <table> </table> </li> <!-- ▲表單1-第2頁▲ --> <!-- ▼表單1-第3頁▼ --> <li> <h4 class="titleC">表單1-第3頁</h4> <table> </table> <table> </table> <table> </table> </li> <!-- ▲表單1-第3頁▲ --> </ul> </div> </div> <!-- ▲▲TAB1▲▲ --> <!-- ▼▼TAB2▼▼ --> <div id="TAB2"> <div id="TAB2Slider"> <ul> <!-- ▼表單2-第1頁▼ --> <li> <h4 class="titleL">表單2-第1頁</h4> <table> </table> <table> </table> </li> <!-- ▲表單2-第1頁▲ --> <!-- ▼表單2-第2頁▼ --> <li> <h4 class="titleC">表單2-第2頁</h4> <table> </table> <table> </table> <table> </table> </li> <!-- ▲表單2-第2頁▲ --> <!-- ▼表單2-第3頁▼ --> <li> <h4 class="titleC">表單2-第3頁</h4> <table> </table> <table> </table> <table> </table> </li> <!-- ▲表單2-第3頁▲ --> </ul> </div> </div> <!-- ▲▲TAB2▲▲ --> </div> |
JAVASCRIPT
window.onload=function() { tab.setup = { tabs: document.getElementById('btnTab').getElementsByTagName('li'), pages: [ document.getElementById('TAB1'), document.getElementById('TAB2'), ], sliders: [ document.getElementById('TAB1Slider'), document.getElementById('TAB2Slider'), ] } tab.init(); } /*--setup end--*/ var tab = { init: function(){ var tabs = this.setup.tabs; var pages = this.setup.pages; var sliders = this.setup.sliders; var slider = new Swipe(sliders[0]); for(i=0; i<pages.length; i++) { if(i !== 0) pages[i].style.display = 'none'; tabs[i].onclick = function(){ tab.showpage(this); return false; }; } }, showpage: function(obj){ var tabs = this.setup.tabs; var pages = this.setup.pages; var sliders = this.setup.sliders; var num; for(num=0; num<tabs.length; num++) { if(tabs[num] === obj) break; } for(var i=0; i<pages.length; i++) { if(i == num) { pages[num].style.display = 'block'; tabs[num].className = 'selected'; var slider = new Swipe(sliders[num]); } else{ pages[i].style.display = 'none'; tabs[i].className = null; } } } } |
當然table原本是有內容的,css也有另外讀取。不過就不在本篇範圍嚕。