1. 程式人生 > >繼續JS之DOM對象

繼續JS之DOM對象

彈出 標簽 function back 下回 分享 .cn 表單元 去掉空格

前面在JS之DOM中我們知道了屬性操作,下面我們來了解一下節點操作。很重要!!

一、節點操作

創建節點:var ele_a = document.createElement(‘a‘);
添加節點:ele_parent.appendChild(ele_img);
刪除節點:ele_parent.removeChild(ele_p);
替換節點:ele_parent.replaceChild(新標簽,舊標簽);
技術分享
  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5
<title>節點操作</title> 6 <style> 7 .c1 { 8 width: 300px; 9 height: 200px; 10 border: 1px solid red; 11 } 12 </style> 13 </head> 14 <body> 15 <div class="c1"> 16 <p id="p1">年後</p> 17
<p id="p2">hello</p> 18 </div> 19 <button class="addBtn">ADD</button> 20 <button class="delBtn">DEL</button> 21 <button class="replaceBtn">Replace</button> 22 <ul> 23 <li>創建節點:var ele_a = document.createElement(‘a‘);</li> 24
<li>添加節點:ele_parent.appendChild(ele_img);</li> 25 <li>刪除節點:ele_parent.removeChild(ele_p);</li> 26 <li>替換節點:ele_parent.replaceChild(新標簽,舊標簽);</li> 27 </ul> 28 <table border="1"> 29 <tbody id="t1"> 30 <tr> 31 <td><input type="checkbox"></td> 32 <td><input type="text"></td> 33 <td><button class="delbtn">del1</button></td> 34 </tr> 35 <tr> 36 <td><input type="checkbox"></td> 37 <td><input type="text"></td> 38 <td><button class="delbtn">del2</button></td> 39 </tr> 40 <tr> 41 <td><input type="checkbox"></td> 42 <td><input type="text"></td> 43 <td><button class="delbtn">del3</button></td> 44 </tr> 45 <tr> 46 <td><input type="checkbox"></td> 47 <td><input type="text"></td> 48 <td><button class="delbtn">del4</button></td> 49 </tr> 50 </tbody> 51 </table> 52 <script> 53 var ele_add = document.getElementsByClassName(‘addBtn‘)[0]; 54 var ele_del = document.getElementsByClassName(‘delBtn‘)[0]; 55 var ele_repleace = document.getElementsByClassName(‘replaceBtn‘)[0]; 56 console.log(ele_add); 57 //綁定的添加節點的事件 58 ele_add.onclick = function () { 59 //先創建一個標簽 60 var ele_a = document.createElement(‘a‘); 61 console.log(ele_a); //<a></a> 62 ele_a.innerHTML = ‘點擊‘; //<a>點擊</a> 63 ele_a.href = ‘http://www.baidu.com‘; //<a href=‘http://www.baidu.com‘>點擊</a> 64 //先創建一個標簽 65 var ele_img = document.createElement(‘img‘); 66 ele_img.src = ‘1.png‘; 67 ele_img.width = 50; 68 ele_img.height = 50; 69 //找到父標簽 70 var ele_parent = document.getElementsByClassName(‘c1‘)[0]; 71 //然後添加 72 ele_parent.appendChild(ele_a); 73 ele_parent.appendChild(ele_img); 74 }; 75 //綁定的刪除節點的事件 76 ele_del.onclick = function () { 77 //先獲取要刪除的元素 78 var ele_p = document.getElementById(‘p1‘); 79 //獲取它的父元素 80 var ele_parent = document.getElementsByClassName(‘c1‘)[0]; 81 //然後刪除(註意是父元素刪除子元素) 82 ele_parent.removeChild(ele_p) 83 }; 84 //綁定的替換節點的事件 85 ele_repleace.onclick = function () { 86 //找被替換的標簽(舊標簽) 87 var ele_p = document.getElementById(‘p2‘); 88 //創建一個替換後的標簽(新標簽) 89 var ele_img = document.createElement(‘img‘); 90 ele_img.src = ‘2.png‘; 91 ele_img.width = 100; 92 ele_img.height = 50; 93 //找到父節點 94 var ele_parent = document.getElementsByClassName(‘c1‘)[0]; 95 //做替換(父節點替換子節點中的某一個節點):相當於一次刪除加一次添加 96 ele_parent.replaceChild(ele_img, ele_p); 97 } 98 </script> 99 <script> 100 //綁定刪除節點的事件 101 var ele_dels = document.getElementsByClassName(‘delbtn‘); 102 for(var i=0;i<ele_dels.length;i++){ 103 ele_dels[i].onclick = function () { 104 //獲取刪除的元素 105 var ele_tr = this.parentElement.parentElement; 106 // console.log(ele_tr) 107 //找到父節點 108 var ele_tbody_parent =document.getElementById(‘t1‘); 109 //然後刪除 110 ele_tbody_parent.removeChild(ele_tr) 111 } 112 } 113 </script> 114 </body> 115 </html>
具體的節點操作實例

事件類型

onclick        當用戶點擊某個對象時調用的事件句柄。
ondblclick     當用戶雙擊某個對象時調用的事件句柄。

onfocus        元素獲得焦點。               練習:輸入框
onblur         元素失去焦點。               應用場景:用於表單驗證,用戶離開某個輸入框時,代表已經輸入完了,我們可以對它進行驗證.
onchange       域的內容被改變。             應用場景:通常用於表單元素,當元素內容被改變時觸發.(三級聯動)

onkeydown      某個鍵盤按鍵被按下。          應用場景: 當用戶在最後一個輸入框按下回車按鍵時,表單提交.
onkeypress     某個鍵盤按鍵被按下並松開。
onkeyup        某個鍵盤按鍵被松開。

onload         一張頁面或一幅圖像完成加載。

onmousedown    鼠標按鈕被按下。
onmousemove    鼠標被移動。
onmouseout     鼠標從某元素移開。
onmouseover    鼠標移到某元素之上。
onmouseleave   鼠標從元素離開

onselect       文本被選中。
onsubmit       確認按鈕被點擊。

二、onload事件

onload 屬性開發中 只給 body元素加.這個屬性的觸發 標誌著 頁面內容被加載完成.應用場景: 當有些事情我們希望頁面加載完立刻執行,那麽可以使用該事件屬性.

什麽時候加載完什麽時候觸發(如果你想把script放在body上面去,就用到onload事件了)

技術分享
  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>節點操作</title>
  6     <style>
  7         .c1 {
  8             width: 300px;
  9             height: 200px;
 10             border: 1px solid red;
 11         }
 12     </style>
 13     <script>
 14         //如果要把script寫在body的上面就可以用onload事件
 15         //onload什麽時候加載完什麽時候觸發這個事件
 16         window.onload = function () {
 17             var ele_add = document.getElementsByClassName(‘addBtn‘)[0];
 18             var ele_del = document.getElementsByClassName(‘delBtn‘)[0];
 19             var ele_repleace = document.getElementsByClassName(‘replaceBtn‘)[0];
 20             console.log(ele_add);
 21             //綁定的添加節點的事件
 22             ele_add.onclick = function () {
 23                 //先創建一個標簽
 24                 var ele_a = document.createElement(‘a‘);
 25                 console.log(ele_a); //<a></a>
 26                 ele_a.innerHTML = ‘點擊‘; //<a>點擊</a>
 27                 ele_a.href = ‘http://www.baidu.com‘; //<a href=‘http://www.baidu.com‘>點擊</a>
 28                 //先創建一個標簽
 29                 var ele_img = document.createElement(‘img‘);
 30                 ele_img.src = ‘1.png‘;
 31                 ele_img.width = 50;
 32                 ele_img.height = 50;
 33                 //找到父標簽
 34                 var ele_parent = document.getElementsByClassName(‘c1‘)[0];
 35                 //然後添加
 36                 ele_parent.appendChild(ele_a);
 37                 ele_parent.appendChild(ele_img);
 38             };
 39             //綁定的刪除節點的事件
 40             ele_del.onclick = function () {
 41                 //先獲取要刪除的元素
 42                 var ele_p = document.getElementById(‘p1‘);
 43                 //獲取它的父元素
 44                 var ele_parent = document.getElementsByClassName(‘c1‘)[0];
 45                 //然後刪除(註意是父元素刪除子元素)
 46                 ele_parent.removeChild(ele_p)
 47             };
 48             //綁定的替換節點的事件
 49             ele_repleace.onclick = function () {
 50                 //找被替換的標簽(舊標簽)
 51                 var ele_p = document.getElementById(‘p2‘);
 52                 //創建一個替換後的標簽(新標簽)
 53                 var ele_img = document.createElement(‘img‘);
 54                 ele_img.src = ‘2.png‘;
 55                 ele_img.width = 100;
 56                 ele_img.height = 50;
 57                 //找到父節點
 58                 var ele_parent = document.getElementsByClassName(‘c1‘)[0];
 59                 //做替換(父節點替換子節點中的某一個節點):相當於一次刪除加一次添加
 60                 ele_parent.replaceChild(ele_img, ele_p);
 61             };
 62             //表格綁定刪除節點的事件
 63             var ele_dels = document.getElementsByClassName(‘delbtn‘);
 64             for (var i = 0; i < ele_dels.length; i++) {
 65                 ele_dels[i].onclick = function () {
 66                     //獲取刪除的元素
 67                     var ele_tr = this.parentElement.parentElement;
 68 //            console.log(ele_tr)
 69                     //找到父節點
 70                     var ele_tbody_parent = document.getElementById(‘t1‘);
 71                     //然後刪除
 72                     ele_tbody_parent.removeChild(ele_tr)
 73                 }
 74             }
 75         }
 76     </script>
 77 </head>
 78 <body>
 79 <div class="c1">
 80     <p id="p1">年後</p>
 81     <p id="p2">hello</p>
 82 </div>
 83 <button class="addBtn">ADD</button>
 84 <button class="delBtn">DEL</button>
 85 <button class="replaceBtn">Replace</button>
 86 <ul>
 87     <li>創建節點:var ele_a = document.createElement(‘a‘);</li>
 88     <li>添加節點:ele_parent.appendChild(ele_img);</li>
 89     <li>刪除節點:ele_parent.removeChild(ele_p);</li>
 90     <li>替換節點:ele_parent.replaceChild(新標簽,舊標簽);</li>
 91 </ul>
 92 <table border="1">
 93     <tbody id="t1">
 94     <tr>
 95         <td><input type="checkbox"></td>
 96         <td><input type="text"></td>
 97         <td>
 98             <button class="delbtn">del1</button>
 99         </td>
100     </tr>
101     <tr>
102         <td><input type="checkbox"></td>
103         <td><input type="text"></td>
104         <td>
105             <button class="delbtn">del2</button>
106         </td>
107     </tr>
108     <tr>
109         <td><input type="checkbox"></td>
110         <td><input type="text"></td>
111         <td>
112             <button class="delbtn">del3</button>
113         </td>
114     </tr>
115     <tr>
116         <td><input type="checkbox"></td>
117         <td><input type="text"></td>
118         <td>
119             <button class="delbtn">del4</button>
120         </td>
121     </tr>
122     </tbody>
123 </table>
124 </body>
125 </html>
onload事件(基於節點操作的修改) 技術分享
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 
 7     <script>
 8          /*
 9               window.onload=function(){
10                    var ele=document.getElementById("ppp");
11                    ele.onclick=function(){
12                    alert(123)
13                 };
14              };
15          
16          */
17 
18 
19 
20           function fun() {
21               var ele=document.getElementById("ppp");
22                ele.onclick=function(){
23                 alert(123)
24             };
25           }
26 
27     </script>
28 </head>
29 <body onload="fun()">
30 
31 <p id="ppp">hello p</p>
32 
33 </body>
34 </html>
onload示例二

三、onkeydown事件

Event 對象:Event 對象代表事件的狀態,比如事件在其中發生的元素、鍵盤按鍵的狀態、鼠標的位置、鼠標按鈕的狀態。
事件通常與函數結合使用,函數不會在事件發生前被執行!event對象在事件發生時系統已經創建好了,並且會在事件函數被調用時傳給事件函數.我們獲得僅僅需要接收一下即可.比如onkeydown,我們想知道哪個鍵被按下了,需要問下event對象的屬性,這裏就時KeyCode.

技術分享
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <input type="text" class="test">
 9 <input type="text" id="t1"/>
10 <script>
11     //測試event對象
12     var ele = document.getElementsByClassName(‘test‘)[0];
13 //    event :每次觸發事件時所有的狀態信息
14 //    event.keyCode :保存著所有的狀態信息
15     ele.onkeydown =function (event) {
16 //        onkeydown按下鍵盤觸發的事件
17         console.log(event);
18         console.log(event.keyCode);
19         if (event.keyCode==13){
20             //按回車就會彈出
21             alert(666)
22         }
23     }
24 </script>
25 <script type="text/javascript">
26     var ele=document.getElementById("t1");
27     ele.onkeydown=function(e){
28         e=e||window.event;
29         var keynum=e.keyCode;
30         var keychar=String.fromCharCode(keynum);
31 //        console.log(keynum); //每次鍵盤敲下的狀態信息
32 //        console.log(keychar);  //輸入的字符
33 //        alert(keynum);
34 //        alert(keychar)  //你鍵盤輸入的字符
35     };
36 </script>
37 </body>
38 </html>
onkeydown事件

技術分享

四、onsubmit事件

當表單在提交時觸發. 該屬性也只能給form元素使用.應用場景: 在表單提交前驗證用戶輸入是否正確.如果驗證失敗.在該方法中我們應該阻止表單的提交.

技術分享
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>onsubmit事件</title>
 6     <!--onsubmit事件:確定按鈕被點擊-->
 7     <!--在表單提交前驗證用戶輸入是否正確.如果驗證失敗.在該方法中我們應該阻止表單的提交.-->
 8     <!--提交按鈕本身就有一個默認事件(你點擊提交的時候就會把數據發過去)-->
 9 
10 </head>
11 <body>
12 <form action="" id="submit">
13     <p>姓名:<input type="text" class="name"></p>
14     <p>年齡:<input type="text" class="age"></p>
15     <input type="submit">
16 </form>
17 <input type="text" class="test">
18 <script>
19     var ele_form = document.getElementById(‘submit‘);
20     var ele_name = document.getElementsByClassName(‘name‘)[0];
21     var ele_age = document.getElementsByClassName(‘age‘)[0];
22     ele_form.onsubmit = function (event) {
23         var username = ele_name.value;
24         var age = ele_age.value;
25         alert(username);
26         alert(age);
27         if (username==‘haiyan‘){
28             //阻止默認事件的兩種方式
29 //            方式一:
30 //            return false;
31 //            方式二
32 //            給函數給一個形參,這個形參寫什麽都行,一般我們寫成event
33             event.preventDefault() //阻止默認事件(表單的提交)
34         }
35     }
36 </script>
37 <script>
38     //測試event對象
39     var ele = document.getElementsByClassName(‘test‘)[0];
40 //    event :每次觸發事件時所有的狀態信息
41 //    event.keyCode :保存著所有的狀態信息
42     ele.onkeydown =function (event) {
43 //        onkeydown按下鍵盤觸發的事件
44         console.log(event);
45         console.log(event.keyCode);
46         if (event.keyCode==13){
47             //按回車就會彈出
48             alert(666)
49         }
50     }
51 </script>
52 </body>
53 </html>
onsubmit

五、事件傳播

技術分享
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>事件傳播</title>
 6     <style>
 7         .box1 {
 8             width: 300px;
 9             height: 300px;
10             background-color: rebeccapurple;
11         }
12         .box2{
13             width: 150px;
14             height: 150px;
15             background-color: yellow;
16         }
17     </style>
18 </head>
19 <body>
20 <div class="box1">
21     <div class="box2"></div>
22 </div>
23 <script>
24     //因為盒子1是盒子2的父親,所以當給父親綁定一個事件,給兒子也綁定一個事件,就像
25 //    繼承一樣,兒子會繼承父親的事件,所以現在運行的時候如果點擊盒子2,會把自己的是事件和
26 //    父親的事件都執行了。所以如果只想讓兒子執行自己的事件,那麽就得阻止發生事件傳播
27     var ele1 = document.getElementsByClassName(‘box1‘)[0];
28     var ele2 = document.getElementsByClassName(‘box2‘)[0];
29     ele1.onclick = function () {
30         alert(123)
31     };
32     ele2.onclick = function (event) {
33         alert(456);
34         console.log(event);
35         console.log(event.keyCode);
36         //    阻止事件傳播的方式
37         event.stopPropagation();
38     };
39 
40 
41 </script>
42 </body>
43 </html>
事件傳播

六、seach實例

模擬placeholder屬性的功能
<input type="text" placeholder="username" id="submit">
placeholder和value的區別:
  placeholder:只是一個提示功能,不傳值。
  value:是一個默認的值,如果你的輸入框中不寫數據的時候,它會把默認的數據發過去
技術分享
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>模擬placeholder屬性的功能</title>
 6 </head>
 7 <body>
 8 <input type="text" placeholder="username" id="submit">
 9 <input type="text" value="username" id="submit1">
10 <script>
11 //    var ele = document.getElementById(‘submit1‘);
12     var ele = document.getElementById(‘submit1‘);
13     ele.onfocus = function () {
14         //先獲取焦點,點擊輸入框就獲取到焦點,光標一上去就把值設成空
15         this.value=""
16     };
17     ele.onblur = function () {
18 //        當光標不點擊那個輸入框的時候就失去焦點了
19         //當失去焦點的時候,判斷當前的那個值是不是為空,是否含有空格
20 //        如果為空或者有空格,用trim()去掉空格。然後賦值為username
21         if (this.value.trim()==""){
22             this.value=‘username‘
23         }
24     }
25 </script>
26 </body>
27 </html>
seach示例

繼續JS之DOM對象