将以下内容保存在文件中(例如file.htm)并且它可以正常工作=>打印出“3”。 但如果我取消注释'document.write(“Hello:”);''它不再起作用(打印出“0”)。谁知道为什么?
<html>
<head>
<script language="JavaScript" type="text/javascript">
function display() {
//document.write("Hello: ");
document.write(document.links.length + "<br>");
}
</script>
</head>
<body onload="display()">
<A href="link0.htm">Link 0</A>
<A href="link1.htm">Link 1</A>
<A href="link2.htm">Link 2</A>
</body>
</html>
答案 0 :(得分:6)
在Chrome中,我观察到这种行为,而且大多数其他浏览器也可能。原因如下:
没有第一个document.write
,它按预期工作。这里没什么特别的。
但是当你包含第一个document.write
时,它会覆盖文档的全部内容,因此没有任何链接。第二个document.write
正确报告文档中有0个链接。
答案 1 :(得分:1)
首先,不要使用document.write()来“显示”您的输出。如果这只是一个测试,请使用alert()方法。 document.write()仅在页面加载时使用。关闭流并加载文档后,document.write()将产生不可预测的结果。
其次,不要使用document.links,而是尝试使用document.getElementsByTagName(“A”)。这将为您提供文档中所有锚标记的数组。
答案 2 :(得分:0)
因为第一次调用document.write
时,它会删除DOM中的所有链接。它将document.body
的整个innerHTML替换为“Hello:”。
你绝不应该使用document.write
。