博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript实现35选7并记录历史状态
阅读量:7047 次
发布时间:2019-06-28

本文共 2425 字,大约阅读时间需要 8 分钟。

一、利用hash实现

  • 随机数方法Math.random();

  • 数字的splice方法;

  • window.location.hash;

  • window.onhashchange方法。

 

1.1 HTML代码

 

1.2 JS代码

window.onload = function(){    var oBtn = document.getElementById('btn'),        oDiv = document.getElementById('h3');    // 定义json用于存储hash对应的值    var json = {}; // 按钮点击事件    oBtn.onclick = function(){        // 获取数组[1,2,3...35]        var arr1 =  getArr(35);        // 35选7        var result =  getFinalArr(arr1, 7);         // 定义hash对应随机数        var ranNum = Math.random();        window.location.hash = ranNum;        json[ranNum] = result;        oDiv.innerHTML = json[ranNum];        // hash值改变时的事件        window.onhashchange = function(){
oDiv.innerHTML = json[window.location.hash.substring(1)] || null; // 当hash值为空时oDiv.innerHTML赋值为null } } // 35选7方法 function getFinalArr(arr,range){ var _arr1 = []; for(var i = 0; i < range; i++){ var res = arr.splice(Math.random()*arr.length, 1); _arr1.push(res); } return _arr1; } // 生成数组[1,2,3...35]方法 function getArr(num){ var _arr2 =[]; for(var i = 1; i <= num; i++){ _arr2.push(i); } return _arr2; }}

 

二、利用HTML5中的history方法实现

  • 存储历史记录数据:history.pushState(arg1, arg2, arg3)

  • 获取历史记录数据:window.popstate事件发生时,通过event.state获取数据。

 

2.1 JS代码

window.onload = function(){    /**     * history: pushState(arg1, arg2, arg3)       * ar1 --> 要存储的数据; arg2 --> 标题,目前不被支持,一般为空; arg3 --> 地址(可选,虚拟地址,刷新找不到页面)      * history: popstate事件  event.state     */    var oBtn = document.getElementById('btn'),        oDiv = document.getElementById('h3');    oBtn.onclick = function(){
// 获取数组[1,2,3...35] var arr1 = getArr(35); // 35选7 var result = getFinalArr(arr1, 7); // 存储历史记录数据 history.pushState(result, ''); oDiv.innerHTML = result;     // hash值改变(即点击前进后退按钮) window.onpopstate = function(ev){ oDiv.innerHTML = ev.state || null; } } // 35选7方法 function getFinalArr(arr,range){ var _arr1 = []; for(var i = 0; i < range; i++){ var res = arr.splice(Math.random()*arr.length, 1); _arr1.push(res); } return _arr1; } // 生成数组[1,2,3...35]的方法 function getArr(num){ var _arr2 =[]; for(var i = 1; i <= num; i++){ _arr2.push(i); } return _arr2; }}

 

参考:

 

转载于:https://www.cnblogs.com/lvmylife/p/5570544.html

你可能感兴趣的文章
EF调用存储过程、函数
查看>>
【原创】Apache服务器500错误失去响应的问题解决
查看>>
八、继承和聚合
查看>>
Vi / Vim 的使用
查看>>
《直播疑难杂症排查》之二:播放卡顿
查看>>
MFC DAY06 07 08 09
查看>>
Eclipse IDE for C/C++ Developers
查看>>
中文字库的造与创
查看>>
配置NFS固定端口
查看>>
常用的I/O流类型
查看>>
InnoDB Status Output – Buffer Pool and Spin Rounds
查看>>
13、SpringBoot-CRUD员工修改操作/删除
查看>>
Android Studio Error:CreateProcess error=216
查看>>
VPB和OSGGIS安装
查看>>
CF985A Chess Placing【思维】
查看>>
我人生的转折点
查看>>
工作与人生 (摘抄)
查看>>
js点赞浮动特效
查看>>
准备好纸和笔,人肉计算比特币:每天0.67哈希值 ---黑客博客
查看>>
Linux系统时间和硬件时间设置
查看>>