Javascript 无法将InnerHTML属性设置为null

Javascript 无法将InnerHTML属性设置为null,javascript,html,Javascript,Html,我有一个简单的html页面,在body标签中没有代码。 我想通过javascript在body标记中插入html 我的javascript文件如下所示 var Global={ UserWall:function(){ return "a very long html code"; } }; var globalObject=Object.create(Global); document.getElementsByTagName("body").

我有一个简单的html页面,在body标签中没有代码。 我想通过javascript在body标记中插入html

我的javascript文件如下所示

var Global={
    UserWall:function(){
          return "a very long html code";
   }
};

    var globalObject=Object.create(Global);
   document.getElementsByTagName("body").item(0).innerHTML=globalObject.UserWall();
现在我希望这个很长的html代码在页面加载时自动插入到body标记中。 但它给了我我在标题中提到的错误。为什么

这也是创建基于ajax的网站(无需重新加载页面)的正确方法吗?这意味着如果我调用服务器端脚本来更新这段很长的html代码并将其附加到页面正文中。

也许这样可以:
document.getElementsByTagName(“body”)[0]。innerHTML

是否在html的
中运行?如果是这样的话,您需要确保
标记已首先实际加载


您需要使用onload处理程序,例如:

在构建DOM之前,几乎可以肯定您正在运行代码。尝试在处理程序函数中运行代码(但请参见下面的注释):

另一种流行的跨浏览器解决方案是将
块放在关闭
标记之前。这可能是您的最佳解决方案,具体取决于您的需求:

<html>
  <body>

    <!-- all of your HTML goes here... -->

    <script>
        // code in this final script element can use all of the DOM
    </script>
  </body>
</html>

//最后一个脚本元素中的代码可以使用所有DOM
  • 请注意,
    window.onload
    将等待所有图像和子帧加载完毕,这可能需要很长时间才能构建DOM。您还可以使用
    document.addEventListener(“DOMContentLoaded”,function(){…})
    来避免此问题,但跨浏览器不支持此操作。body底部技巧是跨浏览器的,并且在DOM完成后立即运行

    • 我已经完成了这里提到的所有解决方案。但是,直到我使用Jquery创建了这个程序,它们才起作用:

      在我的HTML页面中:

      > <div  id="labelid" > </div>
      
      >
      
      当我点击一个按钮时,我把它放在我的JS文件中:

      $("#labelid").html("<label>Salam Alaykom</label>");
      
      $(“#labelid”).html(“Salam Alaykom”);
      
      它在外部脚本中运行并不重要。你什么时候装货?如果它包含在
      标签中,它仍然会立即运行。它没有拾取body标签,因此不知道您的问题是什么。它在
      标签中!它位于
      标记之前。因此,内容尚未加载。还没有尸体标签。使用onload处理程序。thnx的解释很好。嘿,你能告诉我这是开发ajax应用程序的正确方法吗?在运行时将文本附加到正文中?完美的答案!
      $("#labelid").html("<label>Salam Alaykom</label>");