第一個div的子節點從哪里開始算起?
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無標題文檔</title>
</head>
<body>
<div>
? android
? <p>javascript</p> ? //第一個子節點是p嗎 ??
??
? <div>jQuery</div>
? <h5>PHP</h5>
</div>
<script type="text/javascript">
?var a=document.getElementsByTagName('div')[0].childNodes;
? // ?document.getElementsByTagName('div')[0].childNodes; 中的[0]指哪一個?
?for(var i=0;i<a.length;i++){
? ? ? ??
? ? ? ? ?document.write(a[i].nodeName+"</br>");
? ? ? ? ? document.write(a[i].nodeType+"</br>");
? ? ? ? ?document.write(a[i].nodeValue+"</br>");
? ? ?}
?//document.write(a);
?
?
</script>
</body>
</html>
2016-04-07
不論什么瀏覽器第一個子節點都不會是p,而是文本節點#text。只不過IE下節點的值是android,而谷歌等瀏覽器是?android 。注意第二個?android 前后有空格,原因就是請繼續看本章節。
document.getElementsByTagName('div')[0].childNodes;中的[0]表示獲取所有div節點中的第一個div節點。通過TagName獲取的節點是一個集合,類似數組,即使本例只有一個div,也必須通過[0]來獲取它。
2016-04-07
去掉空格,第一個節點是”android ”;在谷歌瀏覽器下輸出document.write(a[0].nodeName);是文本#text,不是P
2016-04-07
這個需要分瀏覽器,IE瀏覽器不會計算空格,但是谷歌瀏覽器會自動把空格計算上,因此節點長度會有所增加
2016-04-07
div的第一個子節點應該就是p。