我有以下HTML文档
<html>
<script>
function explode() {
pp = document.getElementsByTagName("a");
for(i=0;i<pp.length;i++) {
document.write(pp[i].href);
}
}
</script>
<body>
<a href="http://google.com">Google</a>
<a href="http://yahoo.com">Yahoo</a>
<button onclick="explode()">Explode</button>
<body>
</html>
执行时我希望我的窗口上打印所有超链接,但我只得到第一个。有人可以解释一下
更新
我确信document.write
将重置页面内容的答案,但如果是这样,那么我已经是变量pp
中的对象列表,并且在for循环结束时我应该获取最后一个元素,为什么是第一个元素?
答案 0 :(得分:2)
document.write
- 当他遇到document.write
时,会第一次清除您的浏览器!
您必须汇总这些值。
这样做
function explode() {
pp = document.getElementsByTagName("a");
var a='';
for(i=0;i<pp.length;i++) {
a+=pp[i].href
}
document.write(a);
}
http://jsbin.com/buzexuce/2/edit
为了说明另一个方向:
look what happens here :
<a href="http://google.com">Google</a>
<a href="http://yahoo.com">Yahoo</a>
<button onclick="explode()">Explode</button>
<script>
var pp = document.getElementsByTagName("a");
for(i=0;i<pp.length;i++)
{ document.write(i);}
</script>
(在dom准备好之前 - 一切都很好,如预期的那样)。
答案 1 :(得分:2)
如果在文档完全加载后开始写入文档,您将隐式打开一个新文档并替换当前文档。您可以使用document.write
在文档加载时添加到文档中(例如,在代码中内嵌的脚本标记中),但是一旦文档完成,使用document.write
将隐式调用document.open
创建一个要写入的新文档。
您从getElementByTagName
method获得的元素列表会返回一个实时列表,该列表会在向DOM添加元素或从DOM中删除元素时更新。当您将第一个项目写入文档时,列表为空,因为文档中不再存在任何匹配元素。
答案 2 :(得分:0)
应该是:
document.write(pp[i].href);