今天所提到的就是乙個關於分頁邏輯的思考過程,是眾多分頁方式的一種,這裡簡單整理一下我的思考過程。
if(page_id == 1) else if(page_id > 1 && last_page > 1)
if(page_id == last_page) else if(last_page > 1 && page_id < last_page)
2.具備設定defaultpage頁後顯示省略號,這個邏輯需要考慮一些特殊情況,比如說:總頁數只有一頁,當然不能進入省略號的邏輯了
//threshold = step + 2; 臨界值//pagesdefault最小是臨界值的二倍減去1
pagesdefault = parseint(pagesdefault) > 2*threshold-1 ? 2*threshold-1 : 5;
3.設定step,這個是分頁最重要的邏輯,這塊兒單獨詳細解釋一下:
首先判斷總頁數是否下於或等於defaultpage,下於的話就直接迴圈輸出即可
for(var i=1; i<=last_page; i++) else}
其次就是總頁數大於defaultpage,這又是這個邏輯中,最複雜的一塊兒。
要想直接想清楚這塊兒的處理邏輯其實挺繞的,我們運用簡單的數學歸納法,進行乙個歸納(以step=1為例)
一共有n頁,他有一下幾種邏輯:
page_id=1 1 2 ... n
page_id=2 1 2 3 ... n
page_id=3 1 2 3 4 ... n
page_id=4 1 ... 3 4 5 ... n
page_id=5 1 ... 4 5 6 ... n
...page_id=n-3 1 ... n-4 n-3 n-2 ... n
page_id=n-2 1 ... n-3 n-2 n-1 n
page_id=n-1 1 ... n-2 n-1 n
page_id=n 1 ... n-1 n
可以總結出來以下結論:
1.step=1
2.可以看出臨界值是3,也就是threshold=step+
3.以臨界值處理1~threshold的邏輯
//當前頁下於等於臨界值的時候,需要考慮當前頁的下一位情況,展示省略號和尾頁情況for(var i=1; i<=next; i++) else
}if(next <= last_page-1)
if(next != last_page) else
}
4.一臨界值處理n-threshold+1~n的邏輯
//當前頁大於n-threshold並且下於n的時候,需要考慮當前頁的上一位情況,展示省略號和首頁情況if(pre != 1) else
}if(pre >= 2)
for(var i=pre; i<=last_page; i++) else
}
//處理中間頁tpl += '1';
tpl += '...';
for(var i=pre; i<=next; i++) else
}tpl += '...';
tpl += ''+last_page+'';
這樣整個邏輯就大工告成了,例子中是用js實現的邏輯,這個邏輯可以用在其他的程式語言中。
Windows基本磁碟結構簡析 三 邏輯分割槽
在mbr磁碟上,每個邏輯分割槽都對應有乙個資料結構,它類似於主引導記錄mbr,占用乙個扇區的空間,通常稱為ebr。在ebr中,只有分割槽表中的前兩項以及結束標誌0xaa55有效。ebr分割槽表的第一項表明當前邏輯分割槽的偏移位址,第二項表明下乙個邏輯分析ebr的開始位置。邏輯分割槽的管理類似於資料結...
strtok函式簡析
官方的strtok函式,用來通過分隔字元 不支援字串,傳入的串中每個字元單獨當分隔符,如下例子組合的如123會處理1而23會被跳過 返回分隔的串的首位址 比如呼叫strtok abc123def 123456 返回值是指向abc的指標 下次要獲得 def 需要呼叫strtok null,123456...
IP tcp udp 概念 簡析
ip層接收由更低層 網路介面層例如 乙太網裝置驅動程式 發來的資料報,並把該資料報傳送到更高層 tcp或udp層 相反,ip層也把從tcp或udp層接收來的資料報傳送到更低層。ip資料報是不可靠的,因為ip並沒有做任何事情來確認資料報是按順序傳送的或者沒有被破壞。ip資料報中含有傳送它的主機的位址 ...