分頁器的使用-2 手寫一個分頁器

有時候項目中要求分頁器樣式自定義時,就需要自己去手寫一個分頁器了,怎麼做呢,直接上代碼,具體詳情已經在註釋裏寫清楚了。

注意:
	1. currentPage、count、pageCount爲全局變量
	2. downloadData()函數第一次執行時,並不去進行if語句判斷,自己看代碼時可以直接從ajax請求看,因爲if判斷語句時在第二次執行時,也就是點擊頁碼元素,進行回調時才執行的。
	3.downloadData(currentPage)  這個函數執行時,第一次傳進去的是1。

我只用到了接口js文件和jquery的js文件,邏輯處理全部爲自己手寫。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style>
			body{
				margin: 0;
				padding: 0;
			}

			ul,li{
				list-style: none;
				padding: 0;
			}
			.pagination-box li.active{
				background-color: #ccc;
			}
			.pagination-box{
				display: flex;
			}

			.pagination-box li{
				border: 1px solid black;
				padding: 3px;
				margin-left: 3px;
				cursor:pointer;
			}
		</style>
	</head>
	<body>
		<section>
			<ul class="tableview">

			</ul>
			<ul class="pagination-box">

			</ul>
		</section>

		<script src="js/interface.js" type="text/javascript" charset="utf-8"></script>
		<script src="lib/jquery/jquery.min.js" type="text/javascript" charset="utf-8"></script>

		<script type="text/javascript">
			//定義當前頁爲1
			var currentPage = 1;
			
			//一頁顯示10條數據
			var count = 10;

			//總頁數默認爲0
			var pageCount = 0;
			
			// 下載數據,有一個形參,第一次執行函數時傳進來的是1,在點擊點擊頁碼回調函數時表示拿到的頁碼元素的id值,
			function downloadData(page) {

				// 一下if語句都是在回調時候才判斷的,
				// 首先定義一個新頁面變量,把拿到的元素標籤的id值賦給這個newPage
				var newPage = 0;

				//first  表示點擊的是首頁這個標籤
				if (page == 'first') {
					// 把1賦給newPage 
					newPage = 1
				}

				//last  末頁
				else if (page == 'last') {
					// 把最後一頁賦給newPage   此時的 pageCount已經從數據中計算出總頁碼了
					newPage = pageCount
				}

				//prev 上一頁
				else if (page == 'prev') {
					// 把當前頁減去1
					newPage = currentPage - 1
					// 如果當前頁-1小於1,則等於1
					if (newPage < 1) {
						newPage = 1
					}
				}

				//next 下一頁
				else if (page == 'next') {
					newPage = currentPage + 1
					// 如果當前頁+1大於總頁數,則等於總頁數
					if (newPage > pageCount) {
						newPage = pageCount
					}
				}

				//1~6  點擊1~6時候,直接把拿到的id值,傳給newPage即可,就是表示要跳轉的頁數
				else {
					newPage = page
				}

				// 如果總頁數不爲0 並且 新頁碼等於當前頁碼,退出  也就是在第二頁時,你又點了一下2,則不做任何操作
				if (pageCount != 0 && newPage == currentPage) {
					console.log("頁面未變")
					return
				}
				// 把新頁碼,賦給當前頁碼  當第一次加載DOM層結構時,傳進來的是1,所這句話以及上面的if都沒執行
				currentPage = newPage


				// start變量表示url接口裏的start數據,表示開始頁 因爲第一頁接口裏我定義的start = 0,通過currentPage計算出來就行了
				var start = (currentPage - 1) * count
				// url接口
				var url = readListUrl + "&start=" + start + "&count=" + count
				// console.log("url =" + url)


				// ajax請求
				$.getJSON(url, {}, function(data) {

					// console.log(data)

					var list = data.data

					//顯示內容  遍歷數據顯示在頁面上
					var htmlContent = ""
					for (var index in list) {
						var item = list[index]
						htmlContent += "<li>" + item.title + "</li>"
					}
					$(".tableview").html(htmlContent)


					// 計算總頁數  通過接口裏的total值去計算
					var total = data.total
					pageCount = Math.ceil(total / count)
					// console.log("pageCount=" + pageCount)

					//頁碼的html
					$(".pagination-box").html("")
					$(".pagination-box").append("<li id='first'>首頁</li>")
					$(".pagination-box").append("<li id='prev'>上一頁</li>")

					//遍歷頁碼li
					for (var i = 1; i <= pageCount; i++) {
						//當前頁等於第i個頁碼時,給這個頁碼li標籤添加一個樣式爲active,變色
						if (i == currentPage) {
							$(".pagination-box").append("<li id='" + i + "' class='active'>" + i + "</li>")
						} else {
							$(".pagination-box").append("<li id='" + i + "' >" + i + "</li>")
						}
					}
					$(".pagination-box").append("<li id='next'>下一頁</li>")
					$(".pagination-box").append("<li id='last'>尾頁</li>")


					//添加點擊事件
					$(".pagination-box li").on("click", function() {

						// 當點擊哪一個的時候,拿到頁碼li的id,傳出去,
						var id = $(this).attr("id")
						// console.log("click id=" + id)

						// 這時候又去回調這個函數,就會執行if語句了,
						downloadData(id)

					})
				})

			}
			downloadData(currentPage)
		</script>

	</body>
</html>

效果如下:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章