为什么我的这个js代码无效啊?

<!DOCTYPEhtml><html><headlang="en"><metacharset="UTF-8"><title>test02</title><scriptt... <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>test02</title>
<script type="text/javascript">
var x = document.getElementById("kk").getElementsByTagName("li");
var k = x.length;
for(var i=1; i<=k; i++){
document.write(x[i]);
}
</script>
</head>
<body>
<div id="kk">
<ul>
<li id="ls1">a</li>
<li id="ls2">b</li>
<li id="ls3">c</li>
<li id="ls4">d</li>
<li id="ls5">e</li>
<li id="ls6">f</li>
<li id="ls7">g</li>
<li id="ls8">h</li>
</ul>
</div>
</body>
</html>
展开
 我来答
小柠萌嘟6P
2016-07-09 · 超过66用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:53万
展开全部
写在head的script加上:
window.onload = function(){
// 这里再写代码
};
PS:这样就不要使用document.write()了,因为文档流关闭了,再使用这个会重新绘制页面,也就是覆盖原先的内容了
追问
非常感谢,我明白了,能在请教你一个问题吗,有的代码要写在window.onload里面而有的又不需要,这是为什么啊?就像下面这个代码就没写,连function都没写也能执行呀?

cars=[a","b","c","d"];
for (var i=0;i");
}
追答
假设你的 js代码 写在body结构之前,
就说明body结构还没有加载但是js已经加载了,
这时候,如果你的js里面涉及到操作DOM(也就是body里面的标签),
就会找不到,(因为body还没加载),
这时候就需要加上window.onload

你提问的代码是涉及body里面节点查找的,所以需要加,
你追问的代码没有涉及body节点,所以不需要加,
并且,像这种document.write() 不能写在window.onload里面,
因为window.onload执行的时候文档流就关闭了,再使用document.write()就重绘页面,也就是之前说的覆盖了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式