JavaScript实现35选7并记录历史状态
aaarticlea/png;base64,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" alt="" />
一、利用hash实现
随机数方法Math.random();
数字的splice方法;
window.location.hash;
window.onhashchange方法。
1.1 HTML代码
<button id="btn" type="button">35选7</button>
<h3 id="h3"></h3>
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;
}
}
</script>
二、利用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;
}
}
JavaScript实现35选7并记录历史状态的更多相关文章
- javascript练习----复选框全选,全不选,反选
第一种方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- javascript 操作复选框无效
<script type="text/javascript"> // 操作checkbox复选框按钮 var inputs = $('#article_list').f ...
- 表单javascript checkbox全选 反选 全不选
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- JavaScript 实现全选 / 反选功能
JavaScript 实现全选 / 反选功能 版权声明:未经授权,内容严禁转载! 构建主体界面 编写 HTML 代码 和 CSS 代码,设计主题界面 <style> #user { wid ...
- javascript操作多选下拉列表
闲来无事,把javascript操作多选下拉列表有关的操作知识复习了一遍,代码附上 <%-- Created by IntelliJ IDEA. User: Administrator Date ...
- Javascript实现全选按钮
Javascript实现全选按钮 效果:有全选选项框和单个选项框,选择全选框,所有的的选择都打上的钩,取消全选钩所有的都去掉了钩,如果取消其中某一个的钩,那么全选的钩也取消,反之全选所有的选项,那么全 ...
- JavaScript、全选反选-课堂笔记
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 转发!HTML 复选框 checkbox 的 JavaScript 的全选和全反选
checkbox 或者按钮实现 form 内的 checkbox 全选或者反选,代码很简单,全部代码如下: <html> <head> <meta http-equiv= ...
- jQuery/javascript实现全选全不选
<html> <head> <meta charset="utf-8"> <title>Checkbox的练习</title& ...
随机推荐
- CryptoZombies学习笔记——Lesson5
chapter1:token代币 简而言之,通证就是支持交易的包含一系列规范的函数接口的一个智能合约,发币可以用ERC20标准,但是像僵尸这种非同质化代币,需要用ERC721标准 chapter2:e ...
- 转战Java~
记得16年5月份开始学的Java,当时就是为了学Hadoop才学的Java基础,之后Hadoop没学成,倒是学了Java Web的东西,当时就是玩玩,然后弄了个WeChat后台,就完事了.然后就又回到 ...
- 关于docker 基础使用记录
Docker Hub地址:https://hub.docker.com Docker Hub 存放着 Docker 及其组件的所有资源.Docker Hub 可以帮助你与同事之间协作,并获得功能完整的 ...
- Python中的reload函数
Python中的import语句可以导入module文件,但是import语句只是第一次导入的时候会执行module文件中的代码,然后就会把导入的模块文件存入到内存,当再次导入的时候,Python是直 ...
- Python学习之路3 - 字符串操作&字典
本节内容: 常用的字符串处理. 格式化输出字符串. 字符串的替换. 字符串和二进制的相互转化. 字典的操作 字符串操作 常用的字符串处理 name = 'vector' print(name.capi ...
- Java语法基础课后作业
1.动手动脑 运行它EnumTest.java,分析运行结果 s和t分别引用的是SMALL和LARGE,枚举类型不是原始数据类型,s和u的赋值方式不同,但结果一样,列出它的所有值:SMALL,MEDI ...
- 原生js实现自定义alert风格和实现
2018年6月29 最新更新 添加函数节流,解决多次点击问题,添加单例模式,提高代码性能. <!DOCTYPE html> <html lang="en"> ...
- Gitkraken系列-Gitkraken使用操作
一个优秀的团队合作离不开git,一个优秀的程序员也离不开git.gitkraken是我在进行软工实践这门课接触到的git的UI界面的工具,它给我留下的印象就是非常好用和方便 怎么个方便法呢? 方便的安 ...
- docker使用记录
1.安装(开始前要注意系统内核版本是否合适,建议用7以上的系统吧,少点坑) //安装docker yum -y install docker-io //启动 service docker start ...
- JAVA的泛型与反射的联合应用
通过泛型与反射的结合,可以编写框架来使开发更容易,这里演示的是BaseDao部分的简单使用. BaseDao部分代码: public abstract class BaseDao<T>{ ...