错误TypeError:当使用javascript添加文本innerHTML时,document.getElementById(...)为null?

时间:2012-12-26 10:02:45

标签: javascript

<textarea name="widget-generalcode" cols="50" rows="13" id="widget-generalcode"></textarea>

和javascript

<script>
document.getElementById('widget-generalcode').innnerHTML = 'test';
</script>

当我运行代码时,错误TypeError: document.getElementById(...) is null,如何解决?

7 个答案:

答案 0 :(得分:3)

也许你应该把它放在页面加载上:

<script type="text/javascript">
    window.onload = function(){
        document.getElementById('widget-generalcode').innerHTML = 'test';
    };
</script>

答案 1 :(得分:2)

您应该考虑放置javascript语句的位置。 它会影响预期的结果。 我建议您在Firefox中使用Web开发工具,如Firebug(按F12) 它将帮助您调试javascript代码,您可以使用时间轴功能来检测您的Html / javascript的哪些部分“花费”了大量资源。 希望这些信息有用。

答案 2 :(得分:1)

首先,检查在加载DOM时是否执行了JavaScript。一种选择是将<script>标记放在</body>之前。

然后,您应该对表单字段使用value属性:

document.getElementById("widget-generalcode").value = "test";

答案 3 :(得分:0)

你试图在页面呈现之前访问该元素,这样你就永远不会得到那个元素,所以在下面的函数中编写你的代码

<script>
  function call()
  {
    document.getElementById('widget-generalcode').value = 'test';
  } 
</script>

现在在body标签palce onload =“call()”中,如下所示,它将起作用

<body onload ="call()" >

</body>

答案 4 :(得分:0)

抱歉,我是新的2 Stackoverflow

在asp.net Actualy Startup是我的id,但在客户端,它将显示为ctl00_dmrcontent_Startup 所以在你的脚本中将id表单widget-generalcode更改为在客户端显示的内容

<div  id="Startup" runat="server">

答案 5 :(得分:0)

这让我很悲伤。这是理解“onLoad”的执行顺序(在所有PHP执行并转换为HTML之后发生)以及在解析url参数(在onLoad之前发生)之后运行js命令的问题。

答案 6 :(得分:0)

javascript函数在浏览器呈现的html页面之前运行。所以元素的id =&#34; widget-generalcode&#34;代码运行时不存在。

在javscript文件的顶部使用window.unload = functionName,不带括号()。这告诉浏览器在加载html页面后运行函数。这样,当函数运行并且javascript可以对其起作用时,html元素将存在。