JavaScript:为什么document.write以'no privilege'失败?

时间:2010-09-23 12:05:03

标签: javascript

<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'失败?

感谢。

1 个答案:

答案 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(''));