需求: 隨機從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>
