需求: 隨機從35 個數中隨機取出7個不相等的數; 可以查看歷史記錄
1. 方式1
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <input type="button" value="隨機選擇" id="input1"/> <div id="div1"></div> </body> <script> window.onload = function(){ var oBtn = document.getElementById('input1'); var oDiv = document.getElementById('div1'); var json = {};//映射關系用 oBtn.onclick = function(){ var num = Math.random(); var arr = randomNum(35, 7); json[num] = arr;//數組映射到json對象中 oDiv.innerHTML = arr; window.location.hash = num;//改變hash值 }; window.onhashchange = function(){ //http://localhost:63342/js/caipiao.html#0.4086829614825547 oDiv.innerHTML = json[window.location.hash.substring(1)];//去掉#號 } function randomNum(iAll, iNow){ var arr = []; var newArr = []; for(var i = 1; i <= iAll; i++){ arr.push(i);//1-35存到數組arr } for(var i = 0; i <= iNow; i++){ //取7個 var index = Math.floor(Math.random()*arr.length); newArr.push(arr.splice(index, 1));//每次根據下標剪切一個數到新數組中,所以永遠不會重復 } return newArr; } } </script> </html>
方式二: 必須在服務器上寫代碼
<script> window.onload = function(){ var oBtn = document.getElementById('input1'); var oDiv = document.getElementById('div1'); oBtn.onclick = function(){ var arr = randomNum(35, 7); oDiv.innerHTML = arr; history.pushState(arr, '',Math.random()*100);//存數據, Math.random()*100王志發生變化,不要也可以 }; window.onpopstate = function(ev){ oDiv.innerHTML = ev.state;//取數據 } function randomNum(iAll, iNow){ var arr = []; var newArr = []; for(var i = 1; i <= iAll; i++){ arr.push(i);//1-35存到數組arr } for(var i = 0; i <= iNow; i++){ //取7個 var index = Math.floor(Math.random()*arr.length); newArr.push(arr.splice(index, 1));//每次根據下標剪切一個數到新數組中,所以永遠不會重復 } return newArr; } } </script>