首页 > 代码库 > js-DOM ~ 04. BOM:浏览器对象模型window. 、定时器、在线用户、祝愿墙、BOM的内置方法内置对象

js-DOM ~ 04. BOM:浏览器对象模型window. 、定时器、在线用户、祝愿墙、BOM的内置方法内置对象

  1. multiple. select列表多选
  2. 触发事件后调用有参数的函数要先创建一个函数,然后在函数内调用执行函数
  3. Array.from(伪数组):伪数组变为真数组
  4. indexOf():查询字符的索引

a)  indexOf(‘abcde’)

                       i.      indexOf(‘a’)的索引是0

                     ii.      indexOf(‘abc’)的索引是0,按照第一个字符的索引

                   iii.      indexOf(‘ac’)的索引是-1,查找不到ac连续的字符

                     iv.      indexOf(‘f’)的索引是-1,查询不到返回-1

 BOM:浏览器对象模型

  1. window是javascript的顶级对象
  2. window内置很多方法
  3. window.open(url,target,paranm)

    a)  url:地址

      b)  target:打开新窗口的方式,_blank/

  5.  window.close()关闭窗口

  6.  ocation.href = http://www.mamicode.com/“跳转到的新网址”

  7.  setTimeout(function (){},5000(单位:毫秒))

    a)  炸弹定时器 ,只执行一次执行完报废

  8.  history 历史记录管理

    a)  back:回退

    b)  go(-1);0 是刷新

 定时器

  1. 刷新页面,
  2. 固定时间执行一段代码
  3. 定义方法

    a)  setInterval(匿名函数,间隔时间(单位毫秒));

    b)  senInterval(函数,间隔时间);

    c)  setInterval(“函数”,间隔时间)

  3.  clearInterval(定时器的一个ID值,由setInterval返回)

  4.  script中只能获取行内式样式,内联和内的无法获取

  //返回值,清除定时器。
  var num = 1;

  //setInterval他的返回值就是定时器的名字
  var timer = setInterval(function () {
  console.log(num);
  num++
  if(num===10){
  //如何停止定时器呢???
  clearInterval(timer);
  }
  },500);


window.onload = function () { //获取相关元素 var imgArr = document.getElementsByTagName("img"); //设置定时器 setTimeout(fn,5000); function fn(){ imgArr[0].style.display = "none"; imgArr[1].style.display = "none"; } }

 

 

技术分享
 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         select {
 8             width: 170px;
 9             height: 200px;
10             font-size: 16px;
11             background-color: #a4ff43;
12         }
13     </style>
14 </head>
15 <body>
16     <select name="" id="sel1" size="10" multiple>
17         <option value="http://www.mamicode.com/0">香蕉</option>
18         <option value="http://www.mamicode.com/1">苹果</option>
19         <option value="http://www.mamicode.com/2">鸭梨</option>
20         <option value="http://www.mamicode.com/3">葡萄</option>
21     </select>
22     <input type="button" value="http://www.mamicode.com/>>>"/>
23     <input type="button" value="http://www.mamicode.com/<<<"/>
24     <input type="button" value="http://www.mamicode.com/>"/>
25     <input type="button" value="http://www.mamicode.com/<"/>
26     <select name="" id="sel2" size="10" multiple>
27 
28     </select>
29 
30     <script>
31         //需求1:点击>>>和<<<两个按钮,所有的子元素都跑到对方的标签中。
32         //步骤:
33         //1.获取相关元素,并绑定事件
34         //2.获取子元素,整体的添加到另外一边的标签中
35 
36         //1.获取相关元素,并绑定事件
37         var sel1 = document.getElementById("sel1");
38         var sel2 = document.getElementById("sel2");
39         var inpArr = document.getElementsByTagName("input");
40 
41         inpArr[0].onclick = function () {
42             //2.获取子元素,整体的添加到另外一边的标签中
43             var arr = sel1.children;
44             //循环遍历放入另一侧的select标签中
45             for(var i=arr.length-1;i>=0;i--){
46                 //放入sel2中,不能用push,要用appendChild;
47                 sel2.appendChild(arr[0]);
48             }
49         }
50         //同理
51         inpArr[1].onclick = function () {
52             //2.获取子元素,整体的添加到另外一边的标签中
53             var arr = sel2.children;
54             //循环遍历放入另一侧的select标签中
55             for(var i=arr.length-1;i>=0;i--){
56                 //放入sel2中,不能用push,要用appendChild;
57                 sel1.appendChild(arr[0]);
58             }
59         }
60 
61         //需求2:点击>和<两个按钮,所有被选定的子元素都跑到对方的标签中。
62         //思路:获取所有子节点,然后循环判断,只有selected属性值为true的选项才能被添加到右侧的select标签中
63         inpArr[2].onclick = function () {
64             //获取所有子节点
65             var arr = sel1.children;
66             //遍历判断数组中的元素selected属性为true的,添加到相反的select标签中
67             for(var i=arr.length-1;i>=0;i--){
68                 if(arr[i].selected === true){
69 //                    arr[i].selected = false;
70                     sel2.appendChild(arr[i]);
71                 }
72             }
73         }
74         //同理
75         inpArr[3].onclick = function () {
76             //获取所有子节点
77             var arr = sel2.children;
78             //遍历判断数组中的元素selected属性为true的,添加到相反的select标签中
79             for(var i=arr.length-1;i>=0;i--){
80                 if(arr[i].selected === true){
81 //                    arr[i].selected = false;
82                     sel1.appendChild(arr[i]);
83                 }
84             }
85         }
86 
87 
88     </script>
89 
90 
91 </body>
92 </html>
选中的value跑到另外一个表格中(简单版)

 

技术分享
 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         select {
 8             width: 170px;
 9             height: 200px;
10             font-size: 16px;
11             background-color: #a4ff43;
12         }
13     </style>
14 </head>
15 <body>
16     <select name="" id="sel1" size="10" multiple>
17         <option value="http://www.mamicode.com/0">香蕉</option>
18         <option value="http://www.mamicode.com/1">苹果</option>
19         <option value="http://www.mamicode.com/2">鸭梨</option>
20         <option value="http://www.mamicode.com/3">葡萄</option>
21     </select>
22     <input type="button" value="http://www.mamicode.com/>>>"/>
23     <input type="button" value="http://www.mamicode.com/<<<"/>
24     <input type="button" value="http://www.mamicode.com/>"/>
25     <input type="button" value="http://www.mamicode.com/<"/>
26     <select name="" id="sel2" size="10" multiple>
27 
28     </select>
29 
30     <script>
31         //需求1:点击>>>和<<<两个按钮,所有的子元素都跑到对方的标签中。
32 
33         var sel1 = document.getElementById("sel1");
34         var sel2 = document.getElementById("sel2");
35         var inpArr = document.getElementsByTagName("input");
36 
37         //如果不带参数,我们可以直接绑定一个函数名。但是因为带有参数,所以我们需要匿名函数去调用这个函数。
38         inpArr[0].onclick = function () {
39             fn1(sel1,sel2);
40         }
41         inpArr[1].onclick = function () {
42             fn1(sel2,sel1);
43         }
44         inpArr[2].onclick = function () {
45             fn2(sel1,sel2);
46         }
47         inpArr[3].onclick = function () {
48             fn2(sel2,sel1);
49         }
50         //封装的时候要注意,第一个按钮先获取的是sel1,第二个按钮先获取的是sel2;
51         function fn1(ele1,ele2) {
52             var arr = ele1.children;
53             for(var i=arr.length-1;i>=0;i--){
54                 ele2.appendChild(arr[0]);
55             }
56         }
57         //把sel1和sel2设置成两个形参,通过调用的时候先后传递达成不一样的需求
58         function fn2(ele1,ele2) {
59             var arr = ele1.children;
60             for(var i=arr.length-1;i>=0;i--){
61                 if(arr[i].selected === true){
62                     arr[i].selected = false;
63                     ele2.appendChild(arr[i]);
64                 }
65             }
66         }
67 
68 
69     </script>
70 
71 
72 </body>
73 </html>
选中的value跑到另外一个表格中(封装版)

 

技术分享
  1 <!DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title></title>
  6     <style>
  7         select {
  8             width: 150px;
  9             height: 200px;
 10             background-color: #7bff68;
 11         }
 12     </style>
 13 </head>
 14 <body>
 15 <select size="10" name="aaa" id="sel1" multiple="multiple">
 16     <option value="http://www.mamicode.com/0">1香蕉</option>
 17     <option value="http://www.mamicode.com/1">2苹果</option>
 18     <option value="http://www.mamicode.com/2">3大鸭梨</option>
 19     <option value="http://www.mamicode.com/3">4草莓</option>
 20 </select>
 21 
 22 <input type="button" value="http://www.mamicode.com/>>>"/>
 23 <input type="button" value="http://www.mamicode.com/<<<"/>
 24 <input type="button" value="http://www.mamicode.com/>"/>
 25 <input type="button" value="http://www.mamicode.com/<"/>
 26 
 27 <select size="10" name="bbb" id="sel2" multiple="multiple">
 28 
 29 </select>
 30 
 31 <script>
 32     //需求:点击按钮把对应的选中项移动到另一侧。
 33     //技术点:如果移动单一的选项,那么看看哪个选项是有selected的。
 34             //如果移动所有的选项,那么直接把sel1中的所有选项放入sel2中。
 35 
 36     //步骤:
 37     //1.获取事件源和相关元素
 38     //2.绑定事件
 39     //3.书写事件驱动程序
 40 
 41     //步骤:
 42     //1.获取事件源和相关元素
 43     var sel1 = document.getElementById("sel1");
 44     var sel2 = document.getElementById("sel2");
 45     var inpArr = document.getElementsByTagName("input");
 46 
 47     //2.绑定事件(push和appendChild用法相似:但是一个是控制数组,一个是控制元素节点)
 48     inpArr[0].onclick = function () {
 49         var optArr = sel1.children;
 50         for(var i=0;i<optArr.length;){
 51             sel2.appendChild(optArr[i]);
 52         }
 53     }
 54 
 55     //为第二个按钮绑定事件
 56     inpArr[1].onclick = function () {
 57         var optArr = sel2.children;
 58         for(var i=0;i<optArr.length;){
 59             sel1.appendChild(optArr[i]);
 60         }
 61     }
 62     inpArr[2].onclick = function () {
 63         var optArr = sel1.children;
 64         for(var i=optArr.length-1;i>=0;i--){
 65             if(optArr[i].selected==true){
 66                 optArr[i].selected=false;
 67                 sel2.appendChild(optArr[i]);
 68             }
 69         }
 70         //获取sel2中的子元素变成真数组,然后排序
 71         var aaa = Array.from(sel2.children).sort(function (a,b) {
 72             return a.value-b.value;
 73         });
 74         //删除素有子元素
 75         for(var i=0;i<sel2.children.length;i++){
 76             sel2.removeChild(sel2.children[i]);
 77         }
 78         //把排好序的数组添加到sel2中
 79         for(var i=0;i<aaa.length;i++){
 80             sel2.appendChild(aaa[i]);
 81         }
 82     }
 83     inpArr[3].onclick = function () {
 84         var optArr = sel2.children;
 85         for(var i=optArr.length-1;i>=0;i--){
 86             if(optArr[i].selected==true){
 87                 optArr[i].selected=false;
 88                 sel1.appendChild(optArr[i]);
 89             }
 90         }
 91         var aaa = Array.from(sel1.children).sort(function (a,b) {
 92             return a.value-b.value;
 93         });
 94         for(var i=0;i<sel1.children.length;i++){
 95             sel1.removeChild(sel1.children[i]);
 96         }
 97         for(var i=0;i<aaa.length;i++){
 98             sel1.appendChild(aaa[i]);
 99         }
100     }
101 </script>
102 
103 </body>
104 </html>
选中的value跑到另外一个表格中(终极版)

 

技术分享
  1 <!DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title></title>
  6     <style>
  7         * {
  8             word-wrap: break-word;
  9         }
 10         .wp {
 11             width: 730px;
 12             margin: 0px auto;
 13         }
 14         .mtn {
 15             margin-top: 5px!important;
 16         }
 17         #ct .frame {
 18             margin: 0;
 19             border: none;
 20         }
 21 
 22         .xfs_2 .frame-title, .xfs_2 .frametitle, .xfs_2 .tab-title {
 23             background-color: #A90000;
 24             background-position: 0 -99px;
 25         }
 26         .xfs .frame-title, .xfs .frametitle, .xfs .tab-title, .xfs .frame-title a, .xfs .frametitle a, .xfs .tab-title a {
 27             color: #FFF!important;
 28         }
 29 
 30         .xfs .frame-title, .xfs .frametitle, .xfs .tab-title {
 31             border: none;
 32             background: transparent url(images/mu.png) repeat-x 0 95;
 33         }
 34 
 35         .title {
 36             padding: 0 10px;
 37             height: 32px;
 38             font-size: 14px;
 39             font-weight: 700;
 40             line-height: 32px;
 41             overflow: hidden;
 42         }
 43         .block {
 44             margin: 10px 10px 0;
 45         }
 46         ul, menu, dir {
 47             display: block;
 48             list-style: none;
 49             -webkit-margin-before: 1em;
 50             -webkit-margin-after: 1em;
 51             -webkit-margin-start: 0px;
 52             -webkit-margin-end: 0px;
 53             -webkit-padding-start: 25px;
 54         }
 55         .mls li {
 56             padding: 0 0 5px;
 57             width: 66px;
 58             height: 85px;
 59         }
 60         .ml li {
 61             float: left;
 62             text-align: center;
 63             overflow: hidden;
 64         }
 65         a {
 66             color: #333;
 67             text-decoration: none;
 68             font: 12px/1.5 Tahoma,‘Microsoft Yahei‘,‘Simsun‘;
 69         }
 70         .mls p {
 71             margin-top: 5px;
 72         }
 73         .ml p, .ml span {
 74             display: block;
 75             width: 100%;
 76             height: 20px;
 77             white-space: nowrap;
 78             text-overflow: ellipsis;
 79             overflow: hidden;
 80         }
 81         .mls img {
 82             width: 48px;
 83             height: 48px;
 84         }
 85         .ml img {
 86             display: block;
 87             margin: 0 auto;
 88         }
 89         a img {
 90             border: none;
 91         }
 92     </style>
 93 </head>
 94 <body>
 95 
 96     <div class="wp mtn">
 97         <div id="diy3" class="area"><div id="frameipq7f2" class="xfs xfs_2 frame move-span cl frame-1"><div
 98                 class="title frame-title"><span class="titletext">当前在线用户</span></div><div id="frameipq7f2_left"
 99                                                                                           class="column frame-1-c"><div
100                 id="frameipq7f2_left_temp" class="move-span temp"></div><div id="portal_block_695"
101                                                                              class="block move-span"><div
102                 id="portal_block_695_content" class="dxb_bc">
103             <div class="module cl ml mls" id="users">
104                 <ul>
105                     <!--<li>-->
106                         <!--<a href="http://www.mamicode.com/#" target="_blank"><img src="http://www.mamicode.com/images/noavatar_small.gif" width="48" height="48" alt="沉眠楚人"></a>-->
107                         <!--<p><a href="http://www.mamicode.com/#" title="沉眠楚人" target="_blank">沉眠楚人</a></p>-->
108                     <!--</li>-->
109 
110                 </ul>
111             </div>
112         </div></div></div></div></div>
113     </div>
114 
115 <script>
116         //模拟从服务器获取数据
117         var users = [
118             {"name": "tdxy01","icon":"images/noavatar_small.gif"},
119             {"name": "沉眠楚人","icon":"images/noavatar_small.gif"},
120             {"name": "爱上karina","icon":"images/75_avatar_small.jpg"},
121             {"name": "tdxy01","icon":"images/89_avatar_small.jpg"},
122             {"name": "today","icon":"images/noavatar_small.gif"},
123             {"name": "hlg","icon":"images/noavatar_small.gif"},
124             {"name": "itcast","icon":"images/noavatar_small.gif"},
125             {"name": "heima","icon":"images/noavatar_small.gif"},
126             {"name": "nima","icon":"images/noavatar_small.gif"},
127             {"name": "gege","icon":"images/noavatar_small.gif"},
128             {"name": "nimei","icon":"images/noavatar_small.gif"},
129             {"name": "goodman","icon":"images/noavatar_small.gif"},
130             {"name": "haoren","icon":"images/noavatar_small.gif"},
131             {"name": "yuanxiaojie","icon":"images/noavatar_small.gif"},
132             {"name": "zhengyue","icon":"images/noavatar_small.gif"},
133             {"name": "qishi","icon":"images/noavatar_small.gif"},
134             {"name": "qqtang","icon":"images/noavatar_small.gif"},
135             {"name": "wawawa","icon":"images/noavatar_small.gif"},
136             {"name": "haha","icon":"images/noavatar_small.gif"},
137             {"name": "robot","icon":"images/noavatar_small.gif"},
138             {"name": "XFlute","icon":"images/noavatar_small.gif"},
139             {"name": "lovmilan","icon":"images/noavatar_small.gif"},
140             {"name": "johnny670","icon":"images/noavatar_small.gif"},
141             {"name": "xiaobinbin02","icon":"images/noavatar_small.gif"},
142             {"name": "axxxxx","icon":"images/noavatar_small.gif"}
143         ];
144 
145 
146         //需求:页面显示所有的在线用户。
147         //思路:模拟服务器获取数据(数组中装着json).获取ul,把ul的innerHTML属性获取到,然后不间断的往innerHTML属性中赋值。
148                 //赋值要求:li标签的内容。
149         //步骤:(获取元素)
150         var div = document.getElementById("users");
151         var ul = div.firstElementChild || div.firstChild;
152 //        var ul = div.children[0];
153 
154         //1.模拟服务器获取数据(定义数组),通过循环添加元素(定义for)
155         //数组中有多少元素,我们就创建多少个li标签
156         for(var i=0;i<users.length;i++){
157             //2.模拟实验的操作方式。
158             ul.innerHTML += ‘<li>‘+
159                                 ‘<a href="http://www.mamicode.com/#" target="blank"><img src="http://www.mamicode.com/‘+users[i].icon+‘" width="48" height="48" alt="‘+users[i].name+‘"></a>‘+
160                                 ‘<p><a href="http://www.mamicode.com/#" title="‘+users[i].name+‘" target="_blank">‘+users[i].name+‘</a></p>‘+
161                             ‘</li>‘;
162         }
163 
164 
165 //       var str = "b";
166 //        var str2 = "a"+str+"c";
167         //实验;
168         //获取ul
169 //    var div = document.getElementById("users");
170 //    var ul = div.firstElementChild || div.firstChild;
171 //    var ul = div.children[0];
172 
173     //往ul中添加li元素以及li元素中的内容
174 //        ul.innerHTML += ‘<li>‘+
175 //                        ‘<a href="http://www.mamicode.com/#" target="_blank"><img src="http://www.mamicode.com/images/noavatar_small.gif" width="48" height="48" alt="沉眠楚人"></a>‘+
176 //                        ‘<p><a href="http://www.mamicode.com/#" title="沉眠楚人" target="_blank">沉眠楚人</a></p>‘+
177 //                    ‘</li>‘;
178 //        ul.innerHTML += ‘<li>‘+
179 //                ‘<a href="http://www.mamicode.com/#" target="_blank"><img src="http://www.mamicode.com/images/noavatar_small.gif" width="48" height="48" alt="沉眠楚人"></a>‘+
180 //                ‘<p><a href="http://www.mamicode.com/#" title="沉眠楚人" target="_blank">沉眠楚人</a></p>‘+
181 //                ‘</li>‘;
182 //        ul.innerHTML += ‘<li>‘+
183 //                ‘<a href="http://www.mamicode.com/#" target="_blank"><img src="http://www.mamicode.com/images/noavatar_small.gif" width="48" height="48" alt="沉眠楚人"></a>‘+
184 //                ‘<p><a href="http://www.mamicode.com/#" title="沉眠楚人" target="_blank">沉眠楚人</a></p>‘+
185 //                ‘</li>‘;
186 // str = ‘a‘+
187 //          ‘b‘+
188 //          ‘c‘+
189 //       ‘d‘;
190 
191     </script>
192 </body>
193 </html>
在线用户

 

技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        body {
            margin: 0 auto;
            padding: 0px;
            font-size: 12px;
            background: url(images/bg.gif) repeat center 36px;
            text-align: center;
            background-color: #c30230;
        }
        #content {
            margin: 0 auto;
            width: 960px;
            background: url(images/content_bg.jpg) no-repeat left top;
            height: 627px;
            position: relative;
        }

        #content .tip1, #content .tip2, #content .tip3, #content .tip4, #content .tip5, #content .tip6, #content .tip7, #content .tip8 {
            position: absolute;
            width: 227px;
            left: 200px;
            top: 100px;
        }

        #content .tip1 .tip_h {
            background: url(images/tip1_h.gif) no-repeat left top;
        }

        #content .tip1 .tip_h, #content .tip2 .tip_h, #content .tip3 .tip_h, #content .tip4 .tip_h, #content .tip5 .tip_h, #content .tip6 .tip_h, #content .tip7 .tip_h, #content .tip8 .tip_h {
            width: 227px;
            padding-top: 45px;
            height: 23px;
            text-align: left;
            cursor: move;
        }
        #content .tip1 .tip_c {
            background: url(images/tip1_c.gif) repeat-y;
        }

        #content .tip1 .tip_c, #content .tip2 .tip_c, #content .tip3 .tip_c, #content .tip4 .tip_c, #content .tip5 .tip_c, #content .tip6 .tip_c, #content .tip7 .tip_c, #content .tip8 .tip_c {
            width: 200px;
            padding-left: 12px;
            padding-right: 15px;
            min-height: 40px;
            text-align: left;
            line-height: 20px;
            max-height: 160px;
            word-wrap: break-word;
            word-break: break-all;
            overflow: hidden;
        }

        #content .tip1 .tip_f {
            background: url(images/tip1_f.gif) no-repeat left top;
        }

        #content .tip1 .tip_f, #content .tip2 .tip_f, #content .tip3 .tip_f, #content .tip4 .tip_f, #content .tip5 .tip_f, #content .tip6 .tip_f, #content .tip7 .tip_f, #content .tip8 .tip_f {
            width: 227px;
            height: 53px;
            padding-top: 20px;
        }
        #content .close, #content .close2 {
            float: left;
            font-size: 12px;
            cursor: pointer;
            color: #000000;
        }
        .clr {
            clear: both;
            overflow: auto;
            display: block;
            height: 0px;
        }
        #content .icon {
            float: left;
            width: 35px;
            padding-left: 15px;
            height: 35px;
            text-align: center;
        }
        #content .name {
            float: right;
            padding-right: 15px;
            text-align: right;
            font-size: 14px;
            line-height: 35px;
            color: #C0F;
        }
        #content .num {
            float: left;
            padding-left: 7px;
            width: 195px;
        }
    </style>
</head>
<body>

    <!--纸条墙-->
    <div id="content">
        <!--纸条-->
        <!--<div class="tip1" id="tip" >-->
            <!--<div class="tip_h" title="双击关闭纸条">-->
                <!--<div class="num">第[49568]条 2016-07-7 22:51:52</div>-->
                <!--<div class="close" title="关闭纸条" >×</div>-->
                <!--<div class="clr"></div>-->
            <!--</div>-->
            <!--<div class="tip_c">-->
                <!--普天同庆,天下大同!-->
            <!--</div>-->
            <!--<div class="tip_f">-->
                <!--<div class="icon">-->
                    <!--<img src="http://www.mamicode.com/images/bpic_1.gif"  title="">-->
                <!--</div>-->
                <!--<div class="name">不愿意透露姓名的吕先生</div>-->
                <!--<div class="clr"></div>-->
            <!--</div>-->
        <!--</div>-->
    </div>


    <script>

        //模拟数据库,获取信息
        var messages = [
            {"id":1,"name":"mahu","content":"今天你拿苹果支付了么","time":"2016-02-17 00:00:00"},
            {"id":2,"name":"haha","content":"今天天气不错,风和日丽的","time":"2016-02-18 12:40:00"},
            {"id":3,"name":"jjjj","content":"常要说的事儿是乐生于苦","time":"2016-03-18 12:40:00"},
            {"id":4,"name":"9.8的妹纸","content":"把朋友家厕所拉堵了 不敢出去 掏了半小时了都","time":"2016-03-18 12:40:00"},
            {"id":5,"name":"雷锋ii.","content":"元宵节快乐","time":"2016-02-22 12:40:00"},
            {"id":6,"name":"哎呦哥哥.","content":"据说今晚央视的元宵晚会导演和春晚导演是同一个人,真是躲得过初一,躲不过十五。","time":"2016-02-22 01:30:00"},
            {"id":7,"name":"没猴哥,不春晚","content":"班主任:“小明,你都十二岁了,还是三年级,不觉得羞愧吗”?。小明:“一点也不觉得,老师你都四十多岁了,不也是年年在三年级混日子吗?羞愧的应该是你”。老师:……","time":"2016-02-22 01:30:00"},
            {"id":8,"name":"哎呦杰杰.","content":"真搞不懂你们地球人,月亮有什么好看的,全是坑,还是对面那哥们好看,","time":"2016-02-22 01:30:00"},
            {"id":9,"name":"哎呦哎呦","content":"今天哪里的烟花最好看!!?答:朋友圈。。。","time":"2016-02-22 02:30:00"}
        ];

    //需求1:模拟数据库获取信息,然后在页面上生成数组的长度个tip,然后分别问起内容进行修改。
    //需求2:点击内容,提高层级;点击关闭按钮,删除tip标签;双击顶部,删除标签.....

    //需求1:模拟数据库获取信息,然后在页面上生成数组的长度个tip,然后分别问起内容进行修改。
    //步骤:
        //获取相关元素
        var content = document.getElementById("content");

        //循环生成div标签,然后为innerHTML属性添加内容
        for(var i=0;i<messages.length;i++){
            //生成新标签
            var newDiv = document.createElement("div");
            //绑定类名和ID
            newDiv.className = "tip1";
            newDiv.id = "tip"+messages[i].id;
            //改变位置
            var topValue = http://www.mamicode.com/parseInt(Math.random()*400);
            var leftValue = http://www.mamicode.com/parseInt(Math.random()*700);
            newDiv.style.top = topValue+"px";
            newDiv.style.left = leftValue+"px";
            //赋值内容
            newDiv.innerHTML = ‘<div class="tip_h" title="双击关闭纸条">‘+
                                        ‘<div class="num">第[49568]条 ‘+messages[i].time+‘</div>‘+
                                        ‘<div class="close" title="关闭纸条" >×</div>‘+
                                        ‘<div class="clr"></div>‘+
                                ‘</div>‘+
                                ‘<div class="tip_c">‘+
                                    messages[i].content+
                                 ‘</div>‘+
                                ‘<div class="tip_f">‘+
                                    ‘<div class="icon">‘+
                                    ‘<img src="http://www.mamicode.com/images/bpic_1.gif"  title="">‘+
                                ‘</div>‘+
                                ‘<div class="name">‘+messages[i].name+‘</div>‘+
                                    ‘<div class="clr"></div>‘+
                                ‘</div>‘;
            //把新创建的元素放入content里面
            content.appendChild(newDiv);


            //绑定事件,提高层级
            newDiv.onclick = fn;

            //点击关闭按钮的时候关闭父盒子。
            var closeDiv = newDiv.getElementsByClassName("close")[0];
            closeDiv.onclick = function () {
                //不能用newDiv,因为在页面加载的时候newDiv,已经变成最后一个了,当你点击的时候,用远关闭的是最后的那个div。
//                content.removeChild(newDiv);
                content.removeChild(this.parentNode.parentNode);
            }

            //双击关闭按钮类名叫做tip_h
            var dbDiv = newDiv.getElementsByClassName("tip_h")[0];
            dbDiv.ondblclick = function () {
                //不能用newDiv,因为在页面加载的时候newDiv,已经变成最后一个了,当你点击的时候,用远关闭的是最后的那个div。
//                content.removeChild(newDiv);
                content.removeChild(this.parentNode);
            }

        }

        var index = 1;
        function fn(){
            this.style.zIndex = index;
            index++;
        }

    </script>



</body>
</html>
祝愿墙

 

技术分享
  1 <!DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title></title>
  6     <style>
  7         * {
  8             padding: 0;
  9             margin: 0;
 10         }
 11         .box {
 12             width: 500px;
 13             margin: 200px auto;
 14         }
 15         ul {
 16             width: 392px;
 17             padding: 5px;
 18             list-style: none;
 19             border: 1px solid red;
 20         }
 21         li:hover {
 22             background-color: red;
 23         }
 24         input {
 25             width: 400px;
 26         }
 27         button {
 28             width: 70px;
 29         }
 30     </style>
 31 </head>
 32 <body>
 33     <div class="box">
 34         <input type="text"/>
 35         <button>索搜</button>
 36         <!--<ul>-->
 37             <!--<li>aaaa</li>-->
 38             <!--<li>bbb</li>-->
 39             <!--<li>ccc</li>-->
 40         <!--</ul>-->
 41     </div>
 42 
 43     <script>
 44         //需求:输入内容(输入事件,键盘弹起事件),模拟服务器获取内容,创建ul,并在其中显示。
 45         //步骤:
 46         //1.获取事件源
 47         //2.绑定事件
 48         //3.书写事件驱动程序
 49 
 50 
 51 
 52         //1.获取事件源
 53         //模拟服务器获取内容
 54         var arr = ["a","ab","abc","abcd","aa","aaa"];
 55         var box = document.getElementsByTagName("div")[0];
 56         var inp = box.children[0];
 57 //        var inp = document.getElementsByTagName("input")[0];
 58 
 59         //2.绑定事件(输入内容(输入事件,键盘弹起事件))
 60         inp.onkeyup = function () {
 61             //创建一个字符串,里面添加满了li和对应的内容。
 62             var newArr = [];
 63             //我要从数组中查询以input中输入内容为开头的信息,然后添加到li中,转换成字符串。
 64             //遍历老数组,然后判断每一项,哪项是以input内容为开头的穿件一个li,塞进去。
 65             for(var i=0;i<arr.length;i++){
 66                 //判断当前项,是否已input内容为开头
 67                 //获取输入内容input标签的value属性值。
 68                 var val = this.value;
 69                 if(arr[i].indexOf(val)===0){
 70                     newArr.push("<li>"+arr[i]+"</li>");
 71                 }
 72             }
 73             var str = newArr.join("");
 74 
 75             //Bug1.每次创建新的ul之前,先删除旧的ul
 76             //只有ul存在我们才能删除ul
 77 //            var aaa = box.getElementsByTagName("ul")[0];
 78             if(box.children[2]){
 79                  //只要存在,那么就是object,object类型的数据,只要不是null,对应的boolean值都是true;
 80                 box.removeChild(box.children[2]);
 81             }
 82 
 83             //Bug2.如果input中内容为空,那么久不能在生成ul了。
 84             //如果input为空,那么切断函数
 85 
 86             //Bug3.如果arr数组中没有以input为开头的元素。那么切断函数
 87             //newArr的长度为0,就能证明以input内容为开头的元素,在arr中不存在
 88             if(this.value.length === 0 || newArr.length === 0){
 89                 //切断函数(不在产生新的ul)
 90                 return;
 91             }
 92 
 93             //3.书写事件驱动程序
 94             var ul = document.createElement("ul");
 95             //把创建好的内容添加到ul中。
 96             ul.innerHTML = str;
 97             box.appendChild(ul);
 98         }
 99 
100 
101 
102 
103 
104     </script>
105 
106 
107 </body>
108 </html>
模拟搜索功能

 

表格操作
// rows:返回值是数组 (只读,table和textarea能用)
var tab = document.getElementsByTagName("table")[0];

// insertRow() (只有table能调用)
// var tr = document.createElement("tr");
var aaa = tab.insertRow(2);//指定索引值之前插入
// deleteRow() (只有table能调用)
tab.deleteRow(2);

// console.log(aaa == tr);
console.log(aaa);
console.log(tab.rows);

// cells (只读,tr和textarea能用)
var ce = tab.children[0];
console.log(ce.children[0].cells);
// insertCell() (只有tr能调用)
ce.children[0].insertCell(0);

// deleteCell() (只有tr能调用)
ce.children[0].deleteCell(0);

BOM的内置方法内置对象

name:新窗口的名称,可以为空
featurse:属性控制字符串,在此控制窗口的各种属性,属性之间以逗号隔开。
fullscreen= { yes/no/1/0 } 是否全屏,默认no
channelmode= { yes/no/1/0 } 是否显示频道栏,默认no
toolbar= { yes/no/1/0 } 是否显示工具条,默认no
location= { yes/no/1/0 } 是否显示地址栏,默认no
directories = { yes/no/1/0 } 是否显示转向按钮,默认no
status= { yes/no/1/0 } 是否显示窗口状态条,默认no
menubar= { yes/no/1/0 } 是否显示菜单,默认no
scrollbars= { yes/no/1/0 } 是否显示滚动条,默认yes
resizable= { yes/no/1/0 } 是否窗口可调整大小,默认no
width=number 窗口宽度(像素单位)
height=number 窗口高度(像素单位)
top=number 窗口离屏幕顶部距离(像素单位)
left=number 窗口离屏幕左边距离(像素单位)

 

js-DOM ~ 04. BOM:浏览器对象模型window. 、定时器、在线用户、祝愿墙、BOM的内置方法内置对象