Javascript body标记未定义或为空

Javascript body标记未定义或为空,javascript,html,dom,getelementsbytagname,Javascript,Html,Dom,Getelementsbytagname,你知道为什么我的body标签/元素在我尝试使用它时仍然是空的吗?我有以下代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/> <tit

你知道为什么我的body标签/元素在我尝试使用它时仍然是空的吗?我有以下代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
<title>Max</title>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script>
alert(document.getElementsByTagName("*"));
function se(){
  var twenty = document.getElementsByTagName("*")[20];
 //twenty.children[1].children[0].children[1].innerHTML = "hiephoi";
}
se();

var fg = document.getElementsByTagName("body")[0];//undefined
</script>
</head>
<body>
<script>
alert(document.getElementsByTagName("*"));
function se(){
  var twenty = document.getElementsByTagName("*")[20];
  //twenty.children[1].children[0].children[1].innerHTML = "hiephoi";
}
se();</script>
:
:
:
它表示
document.getElementsByTagName(“*”[20]。children
不是对象,实际上它是未定义的。你可能想知道为什么我会使用通配符,但是仅仅查找任何特定的标记都不会返回任何结果。奇怪的是,通配符确实返回了一个节点列表。 我可以尝试使用JQuery,但我正在努力理解这一点。 我想这可能与文档的加载阶段有关?
或者可能是html在某个地方包含丢失的标记,而JS变得混乱?

您正在尝试在创建DOM树之前获取元素。将javascript放在末尾,在结束体标记之前,看看它是否有效(未测试。出于同样的原因,它仍然可能不起作用)

更好的方法是,查看
window.onload
以确保在尝试读取DOM之前加载了DOM

document.getElementsByTagName("*")[20].children[1].children[0].children[1].innerHTML = "hiephoi";