使用document.links.length输出奇怪的输出

时间:2010-02-17 17:10:17

标签: javascript hyperlink

将以下内容保存在文件中(例如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>

3 个答案:

答案 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