js table表格排序

一:表格排序效果,根據點擊表格頭部th進行排序,如圖:


二:示例代碼,如下:

<!DOCTYPE html>
<html>


	<head>
		<style type="text/css">
			#tb1 {
				border: 1px solid #ddd;
			}
			#tb1 thead th{
				width: 60px;
			}
			#tb1 tbody td {
				border: 1px solid #ddd;
				width: 60px;
				text-align: center;
				box-sizing: border-box;
			}
		</style>
		<meta charset="utf-8">
		<title></title>
	</head>


	<body>
		<table id="tb1">
			<thead>
				<tr>
					<th>姓名</th>
					<th>年齡</th>
					<th>平均分</th>
					<th>總分</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td>小紅</td>
					<td>21</td>
					<td>24</td>
					<td>16</td>
				</tr>
				<tr>
					<td>小強</td>
					<td>23</td>
					<td>2</td>
					<td>19</td>
				</tr>
				<tr>
					<td>小明</td>
					<td>14</td>
					<td>50</td>
					<td>24</td>
				</tr>
			</tbody>
		</table>
		<script type="text/javascript">
			//獲取table表格,獲取th,獲取tbody下的tr
			var table = document.getElementById("tb1");
			var table_th = document.getElementsByTagName("th");
			var table_tbody = table.getElementsByTagName("tbody")[0];
			var table_tr = table_tbody.getElementsByTagName("tr");
			function itemClick(i) {//i表示點擊單個th
				table_th[i].onclick = function() {
					var temp_arr = [];//存放每個th對應的內容,根據內容進行排序
					var temp_tr_arr = [];//存放每個th對應內容的行
					for(j = 0; j < table_tr.length; j++) {
						if(table_tr[j].getElementsByTagName("td")[i].innerHTML==' '){
							temp_arr.push('0')
						}else{
							temp_arr.push(table_tr[j].getElementsByTagName("td")[i].innerHTML);
						}
						temp_tr_arr.push(table_tr[j].cloneNode(true));
					};
					//清空tbody內容
					table_tbody.innerHTML='';
					var temp = parseInt(temp_arr[0]) || temp_arr[0];
					//定義排序方式
					if(typeof(temp) == 'number') {
						temp_arr.sort(function(a, b) { return a - b; });
					} else {
						temp_arr.sort();
					}
					//重新進行排序
					for(k = 0; k < temp_arr.length; k++) {
						for(vv = 0; vv < temp_tr_arr.length; vv++) {
							if(temp_arr[k] == temp_tr_arr[vv].getElementsByTagName("td")[i].innerHTML) {
								table_tbody.appendChild(temp_tr_arr[vv]);
							}
						}
					}
				}
			}
			for(i = 0; i < table_th.length; i++) {
				itemClick(i);
			}
		</script>
	</body>


</html>


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