Javascript / HTML noob在这里......请保持温和。
我正在学习DOM和Javascript的方法,并使用以下页面来探索通过Javascript访问节点:
http://franklyanything.com/test2.html
正如你在Javascript的片段中看到的那样,我放入了Head,我正在尝试访问<html>
元素的第二个子元素,它应该是Body元素。
然而,每次运行页面时都没有任何反应,Firebug会将变量报告为undefined
。如果我将索引从[1]更改为[0],我没有问题。这可以正确识别<html>
标记。
我很难过。想法?
提前致谢!
答案 0 :(得分:4)
document.childNodes[0]
不是<html>
元素。这是doctype声明。
<!DOCTYPE HTML PUBLIC "...>
您可以使用<body>
直接访问document.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]
将按预期工作。
答案 1 :(得分:1)
我认为,真正的问题是您在文档准备之前调用代码。
window.onload=function(){
var theBodyNode = document.childNodes[0].childNodes[1];
alert(theBodyNode.nodeName);
}