HTML5自学笔记[ 8 ]历史管理

触发历史管理的三种方法:

  1. 跳转页面
  2. 改变hash值
  3. pushState(在服务器环境下运行)

用hash值来触发历史管理:

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4 <title>随机产生彩票号码</title>
 5 <meta charset="utf-8"/>
 6 <script>
 7 window.onload = function(){
 8     var oInput = document.getElementById(‘input1‘);
 9     var oDiv = document.getElementById(‘div1‘);
10     var json = {};
11
12     oInput.onclick = function(){
13         var result = randomNum(35,7);
14         var num = Math.random();
15         json[num] = result;
16         oDiv.innerHTML = result;
17         window.location.hash = num;
18     }
19
20     window.onhashchange = function(){
21         if(!this.location.hash.length){
22             oDiv.innerHTML = ‘‘;
23             return;
24         }
25         oDiv.innerHTML = json[this.location.hash.substring(1)];
26     }
27
28 }
29
30 function randomNum(allNum,selNum){
31     var arr = [];
32     var newArr = [];
33     for(var i=0;i<allNum;i++){
34        arr.push(i+1);
35     }
36     for(var j=0;j<selNum;j++){
37         newArr.push(arr.splice(Math.floor(Math.random()*arr.length),1));
38     }
39     return newArr;
40 }
41
42
43 </script>
44
45
46 </head>
47
48 <body>
49 <input type="button" id="input1"  value="随机选号"/>
50 <div id="div1"></div>
51
52
53 </body>
54
55
56
57 </html>

用pushState来触发历史管理:

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4 <title>随机产生彩票号码</title>
 5 <meta charset="utf-8"/>
 6 <script>
 7 window.onload = function(){
 8     var oInput = document.getElementById(‘input1‘);
 9     var oDiv = document.getElementById(‘div1‘);
10     oInput.onclick = function(){
11         var result = randomNum(35,7);
12         oDiv.innerHTML = result;
13
14         history.pushState(result,‘‘,Math.random());  //三个参数,第一个参数是保存的值,第二个参数是title(并无用),第三个参数用来设置url
15
16     }
17
18     window.onpopstate = function(ev){
19         oDiv.innerHTML = ev.state;
20     }
21
22 }
23
24 function randomNum(allNum,selNum){
25     var arr = [];
26     var newArr = [];
27     for(var i=0;i<allNum;i++){
28        arr.push(i+1);
29     }
30     for(var j=0;j<selNum;j++){
31         newArr.push(arr.splice(Math.floor(Math.random()*arr.length),1));
32     }
33     return newArr;
34 }
35
36
37 </script>
38
39
40 </head>
41
42 <body>
43 <input type="button" id="input1"  value="随机选号"/>
44 <div id="div1"></div>
45
46
47 </body>
48
49
50
51 </html>
时间: 2024-12-23 23:10:24

HTML5自学笔记[ 8 ]历史管理的相关文章

HTML5自学笔记[ 10 ]简单的购物车拖拽

用html5拖拽功能实现了一个简单的购物车,样式简陋,得学学画画提高下审美了T^T: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>购物车拖拽</title> 6 7 <style> 8 *{ margin:0; padding:0;} 9 #proList{ overflow:hidden;} 10 #pro

HTML5自学笔记[ 21 ]canvas绘图实例之马赛克

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>马赛克</title> 6 <style> 7 body{background:#000;} 8 canvas{background: #fff; margin-left:500px;} 9 </style> 10

HTML5自学笔记[20 ]canvas绘图实例之绘制倒影

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>倒影</title> 6 <style> 7 body{background:#000;} 8 canvas{background: #fff; margin-left:500px;} 9 </style> 10

HTML5自学笔记[ 24 ]canvas绘图之星空草地

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 7 <style> 8 body{ background:#fff;} 9 div{ width:800px; height:600px; margin:0 auto;} 10 canvas{ backg

HTML5自学笔记[ 17 ]canvas绘图基础4

绘制图像: drawImage(oImg,x,y),oImg是一个Image对象,(x,y)为绘制起点,绘制的图像大小和源图大小一样. drawImage(oImg,x,y,w,h),后两个参数设置绘制后的图形大小. drawImage(oImg,x1,y1,w1,h1,x2,y2,w2,h2),该方法获取源图像的一部分进行绘制并且指定绘制起点和绘制后图像的大小,x1/y1/w1/h1表示选取源图上(x1,y1)点起宽w1高h1的部分,x2/y2/w2/h2表示将选取的部分绘制到画布(x2,y2

HTML5自学笔记[ 3 ]表单验证反馈

表单控件对象的validity对象可以设置或返回相关的验证信息(在invalid事件处理中获取validity对象): 属性valid:为true所有验证通过,为False至少有一种验证失败. 属性valueMissing:表单控件输入值为空时,该属性值为true:不为空时该属性值为false. 属性typeMismatch:输入的内容不符合控件类型要求时,该属性为true,否则为false. 属性patternMismatch:输入的内容不匹配正则表达式时,该属性为true,否则为false.

HTML5自学笔记[ 6 ]data自定义数据

在标签中添加data-name属性并赋值,在js脚本中用ele.dataset.name就可以获取该属性的值.如: <div id="box" data-age="20">年龄</div> <script> var oDiv = document.getElementById('box'); alert(oDiv.dataset.age); //20 </script> 如果name是用-连接的两个及以上单词来命名,那

HTML5自学笔记[ 5 ]JSON的新方法

eval和JSON.parse的区别:eval:可以解析任何字符串为js:parse:只能解析JSON形式的字符串变为js(更安全). json格式的字符串中的属性名必须加双引号“”. stringify()方法将json对象转换成严格格式的json字符串. 兼容低版本浏览器:在页面中引入json2.js.

HTML5自学笔记[ 1 ]新增标签

新增语义化标签 <header></header>: 用于页面或板块头部. <footer></footer>:用于页面底部. <nav></nav>:导航. <hgroup></hgroup>:标题组合. <section></section>:一个板块或区块,用来划分区域. <article></article>:一般用来呈现论坛的一篇帖子. <asid