2011-02-23 44 views
1

Javascript/HTML noob here ...請溫和。訪問childNodes的問題[]

我學習我周圍的DOM和JavaScript的方式和我用下面的頁面通過JavaScript探索訪問節點:

http://franklyanything.com/test2.html

正如你可以在Javascript中的片段,我把在看頭,我試圖訪問<html>元素的第二個孩子,這應該是Body元素。

但是,每次運行頁面時都不會發生任何事情,Firebug會將該變量報告爲undefined。如果將索引從[1]更改爲[0],我沒有任何問題。這正確標識了<html>標籤。

我很難過。想法?

在此先感謝!

回答

1

我認爲真正的問題是,您在準備好之前正在調用代碼。

window.onload=function(){ 
    var theBodyNode = document.childNodes[0].childNodes[1]; 
    alert(theBodyNode.nodeName); 
} 
4

document.childNodes[0]不是<html>元素。這是文檔類型聲明。

<!DOCTYPE HTML PUBLIC "...> 

您可以直接訪問使用document.body<body>節點,並使用document.body.nodeName得到它的節點名稱。

如果你想使用childNodes訪問它,嘗試,

document.childNodes[1].childNodes[2].nodeName 

// document.childNodes[1] => html 
// document.childNodes[1].childNodes[0] => head 
// document.childNodes[1].childNodes[1] => whitespace (text node) 
// document.childNodes[1].childNodes[2] => body 

如果<head><body>之間沒有空格,最後,當然<body>元素將在<html>位置2或索引1子節點。

如果去掉DOCTYPE聲明,頭部和身體之間的空間,那麼你的

document.childNodes[0].childNodes[1] 

將正常工作。