1. 程式人生 > >JS——DOM操作(首尾子節點、兄弟節點【firstChild、previousSibling...】)

JS——DOM操作(首尾子節點、兄弟節點【firstChild、previousSibling...】)

(一)首尾子節點: 【首】:firstChild、 firstElementChild 【尾】:lastChild、 lastElementChild (首尾兩個子節點,有兩種寫法,主要是因為相容性問題)    詳情看以下程式碼:  (lastChild、 lastElementChild與之相同)
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>     
 8     <script>
 9         window.onload=function(){
10             var oUl=document.getElementById('ul');
11             //首尾子節點,存在相容性問題
12 
13             oUl.firstChild.style.background='red'           //在ie9以下的瀏覽器得以實現效果,ie9以上瀏覽器不相容
14 
15             oUl.firstElementChild.style.background='red'    //在ie9以上瀏覽器得以相容,chrome,ff等
16         }
17     </script>
18 </head>
19 <body>
20     <ul id="ul">
21         <li></li>
22         <li></li>
23         <li></li>
24         <li></li>
25     </ul>
26 </html>

由此可見,第13行程式碼:firstChild會在ie9以下的版本中得以實現;而第15行程式碼:firstElementChild會在ie9以上的版本中得以實現

 

但是!

如何解決以上問題?使得瀏覽器具有相容性!!! //解決方法如下: var iResult1=oUl.firstElementChild || oUl.firstChild;    //宣告一個iResult1變數,讓瀏覽器自行判斷選擇的DOM操作物件 iResult1.style.background='blue'     (二)兄弟節點: 【前】:previousSibling、 previousElementSibling 【後】:nextSibling、   nextElementSibling (兄弟兩個子節點,也有兩種寫法,主要是也因為相容性問題)    詳情看以下程式碼:  (nextSibling、 nextElementSibling與之相同)
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>     
 8     <script>
 9         window.onload=function(){
10             var oLi=document.getElementById('li');
11             //兄弟節點,存在相容性問題
12 
13             oLi.previousSibling.style.background='red'           //在ie9以下的瀏覽器得以實現效果,ie9以上瀏覽器不相容
14 
15             oLi.previousElementSibling.style.background='red'    //在ie9以上瀏覽器得以相容,chrome,ff等
16         }
17     </script>
18 </head>
19 <body>
20     <ul id="ul">
21         <li></li>
22         <li id="li">xxx</li>
23         <li></li>
24         <li></li>
25     </ul>
26 </html>

由此可見,第13行程式碼:previousSibling會在ie9以下的版本中得以實現;而第15行程式碼:previousElementSibling會在ie9以上的版本中得以實現

 

同樣地!

如何解決以上問題?使得瀏覽器具有相容性!!! //解決方法如下: var iResult2=oLi.previousElementSibling || oLi.previousSibling;    //宣告一個iResult2變數,讓瀏覽器自行判斷選擇的DOM操作物件 iResult2.style.background='blue'