1. 程式人生 > >HTML DOM firstChild lastChild nextSibling previousSibling 屬性_獲取屬性值的undefined問題

HTML DOM firstChild lastChild nextSibling previousSibling 屬性_獲取屬性值的undefined問題

++ ogl dom tel 文本 next ssi 上一個 fin

 1 <html>
 2  <head>
 3   <title>HTML示例</title>
 4   <style type="text/css">
 5 
 6   </style>
 7  </head>
 8  <body>
 9 
10     <ul id="ulid">
11         <li id="li1">qqqqq</li>
12         <li id="li2">wwww</li>
13         <li id="li3">yyyyyy</li>
14
<li id="li4">test1111</li> 15 </ul> 16 17 <script type="text/javascript"> 18 19 //獲取ul的第一個子節點 id=li1 20 //得到ul 21 var ul1 = document.getElementById("ulid"); 22 //第一個子節點 23 var li1 = ul1.firstChild; 24 alert(li1.id);
25 26 //得到最後一個子節點 27 var li4 = ul1.lastChild; 28 alert(li4.id); 29 30 //獲取li的id是li3的上一個和下一個兄弟節點 31 var li3 = document.getElementById("li3"); 32 alert(li3.nextSibling.id); 33 alert(li3.previousSibling.id); 34 35 </script> 36 </body> 37
</html>

以上案例在Google Chrome和IE是undefined,並且打印一下lastChildNode 顯示是Object Text,是因為在高級瀏覽器裏面,通過前述API拿到的第一和最後一個子標簽是文本標簽(文本節點),跟childNodes屬性類似,因此,我們在碰到這些狀況的時候,還是不建議使用,建議透過getElementsByTagName()的方法獲取子元素.

解決辦法:

不使用HTML DOM firstChild 屬性、HTML DOM lastChild 屬性、HTML DOM nextSibling 屬性、HTML DOM previousSibling 屬性

改為使用HTML DOM getElementsByTagName() 方法

 1 <html>
 2  <head>
 3   <title>HTML示例</title>
 4   <style type="text/css">
 5 
 6   </style>
 7  </head>
 8  <body>
 9 
10     <ul id="ulid">
11         <li id="li1">qqqqq</li>
12         <li id="li2">wwww</li>
13         <li id="li3">yyyyyy</li>
14         <li id="li4">test1111</li>
15     </ul>
16 
17     <script type="text/javascript">
18         
19         var li=document.getElementsByTagName("li");
20         
21         for (var i=0;i<li.length;i++) {
22             alert(li[i].id);
23         }
24         
25     </script>
26  </body>
27 </html>

HTML DOM firstChild lastChild nextSibling previousSibling 屬性_獲取屬性值的undefined問題