JavaScript li元素的順序隨機打亂
本章節介紹一下如何利用JavaScript將ul下的li元素順序隨機打亂。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> window.onload = function() { var obox = document.getElementById("box"); var cloneBox=obox.cloneNode(true); var lis = []; for(var index=0;index<cloneBox.children.length;index++){ lis.push((cloneBox.children)[index]); } var obt = document.getElementById("bt"); function rnd(a,b) { return Math.random() > 0.5 ? -1 : 1; } obt.onclick = function() { obox.innerHTML = ""; var newArray = lis.sort(rnd); for (var i=0,l=newArray.length; i<l; i++) { obox.appendChild(newArray<i>.cloneNode(true)); } } } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li>螞蟻部落二</li> <li>螞蟻部落三</li> <li>螞蟻部落四</li> <li>螞蟻部落五</li> </ul> <input type="button" id="bt" value="檢視效果" /> </body> </html></i>
點選按鈕可以隨機打亂li元素的順序,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).var obox = document.getElementById("box"),獲得id屬性值為box的元素物件。
(2).var cloneBox=obox.cloneNode(true),克隆obox物件,使用深度克隆,也就是它的子元素也會被克隆,之所以需要克隆是因為後面的程式碼obox.innerHTML=""能夠將元素清空,也就無法實現排序效果了。
(3).var lis = [],宣告一個陣列,用來存放li元素。
(4).for(var index=0;index<cloneBox.children.length;index++){lis.push((cloneBox.children)[index]);},將克隆後的元素中的li元素放入陣列。
(5).var obt = document.getElementById("bt"),獲取按鈕物件。
(6).function rnd(a,b) {return Math.random() > 0.5 ? -1 : 1;},此函式用來返回1或者-1,它用來作為陣列的sort()方法的引數。
(7).obox.innerHTML="",清空ul下原來的內容。
(8).var newArray=lis.sort(rnd),對陣列進行隨機排序,並生成新的陣列。
(9).for (var i=0,l=newArray.length; i<l; i++) {obox.appendChild(newArray.cloneNode(true));},遍歷陣列的每一個元素,並將每一個元素的克隆元素追加到ul,這一點很重要,如果不是追加的克隆元素,當第二次點選的時候還是會失敗。
二.相關閱讀:
(1).cloneNode方法參閱JavaScript cloneNode()一章節。
(2).children屬性參閱JavaScript children一章節。
(3).Math.random方法參閱JavaScript Math.random()一章節。
(4).sort方法參閱JavaScript sort()一章節。
(6).appendChild方法參閱JavaScript appendChild()一章節。
相關文章
- JavaScript 陣列順序打亂JavaScript陣列
- JavaScript 陣列中元素隨機打亂排序JavaScript陣列隨機排序
- jQuery調整li元素順序jQuery
- Python程式碼閱讀(第10篇):隨機打亂列表元素Python隨機
- JavaScript動態新增li元素JavaScript
- Python 實現隨機打亂字串Python隨機字串
- JavaScript 獲取第n個li元素JavaScript
- CSS 元素層疊順序CSS
- JavaScript 陣列隨機不重複元素JavaScript陣列隨機
- 使用原生Js addEventListener給每個li元素繫結一個click事件輸出他們的順序JSdev事件
- 深入理解 linux磁碟順序寫、隨機寫Linux隨機
- JavaScript 獲取倒數第二個li元素JavaScript
- 直播小程式原始碼,pytorch同時讓兩個dataloader打亂的順序是相同原始碼PyTorch
- JavaScript執行順序分析JavaScript
- css元素層疊順序詳解CSS
- 檔案隨機或順序讀寫原理深入淺出隨機
- C++ 順序容器中訪問元素C++
- JavaScript萬物產生順序JavaScript
- Win10系統不小心將桌面圖示順序打亂如何恢復Win10
- 隨筆:MySQL 普通3表join順序MySql
- 調整陣列元素順序演算法陣列演算法
- ul中有li,點選li,獲得對應的序號
- JavaScript按照漢字拼音順序排序JavaScript排序
- JavaScript遍歷物件屬性順序JavaScript物件
- HTML、JavaScript、PHP、 MySQL 學習順序HTMLJavaScriptPHPMySql
- jQuery複製指定li元素jQuery
- SuperObject Delphi 的 JSON 屬性亂序 – 操作類改造 – 關於屬性順序的問題ObjectJSON
- jQuery刪除具有指定文字的li元素jQuery
- 說說你對HTML元素的顯示優先順序的理解HTML
- CSS 文字li元素中垂直居中CSS
- 同一個元素中有多個class,優先順序
- 進行List集合去重操作,分為保持原List集合元素順序和不保持原順序
- python讀取資料集檔案下所有檔案並打亂劃分生成訓練測試txt檔案(生成train.txt、test.txt,順序隨機,預設比例8:2)PythonAI隨機
- HTML、CSS、JavaScript、PHP、 MySQL 的學習順序是什麼HTMLCSSJavaScriptPHPMySql
- JavaScript隨機數的應用JavaScript隨機
- jQuery查詢第n個li元素jQuery
- CSS 第2個li元素樣式CSS
- CSS 匹配第一個li元素CSS