<html>
<head>
<style type="text/css">
#navigator a {
display: none;
}
</style>
<script type="text/javascript">
function view() {
var a = document.getElementsByTagName("a");
for (var i = 0; i < a.length; i++)
alert(a[i].innerHTML);
for (var i = 0; i < a.length; i++)
document.write(a[i].innerHTML);
}
</script>
</head>
<body>
<div id="navigator" class="navigator">
<div class="menu">
Programming Language
<a href="">C</a>
<a href="">C++</a>
<a href="">Java</a>
<button type="button" onclick="view()">View</button>
</div>
</div>
</body>
</html>
alert
工作正常。 document.write
使用第一个元素“C”成功但是接下来的两个元素失败了。
为什么document.write以'no privilige'失败?
感谢。
答案 0 :(得分:2)
在页面完全加载后调用document.write
时,您将用您编写的内容替换当前页面。
当您编写第一个元素的HTML代码时,该元素仍然存在,但是当您尝试编写第二个元素的HTML代码时,该元素不再存在。
如果你真的想用几个元素的html代码替换当前页面(因为它不是一个完整的HTML文档,这实际上没有意义),你必须将所有元素的HTML代码收集到一个字符串中,这样你就可以一次写下来:
var code = [];
for (var i = 0; i < a.length; i++) {
code.push(a[i].innerHTML);
}
document.write(code.join(''));