Javascript:body onload事件,变量存在但之后,它变得未定义

时间:2009-11-03 02:10:10

标签: javascript

这是我可以创建的最佳示例。 innerHTML的值出现在onload函数触发的警报中。当它到达document.write时,相同的innerHTML变为null。关于如何让innerHTML出现在onload函数之外的任何想法?我已经尝试了全局变量,甚至将值复制到隐藏的输入,它仍然是空的。

<html>

<head>

<script language='javascript'>
 function onload_function() {
  alert(document.getElementById("sample_size").innerHTML);
 }

 document.write("this is a test: " + document.getElementById("sample_size").innerHTML);
</script>

</head>

<body onload='onload_function()'>
 <form name='form_test'>
  <table border='0' cellpadding='0' cellspacing='0'>
   <tr>
    <td id='sample_size' style='display:none'>16</td>
   </tr>
  </table>
 </form>
</body>

</html>

4 个答案:

答案 0 :(得分:1)

您应该尝试添加脚本:

<script language='javascript'>
 document.write("this is a test: " + document.getElementById("sample_size").innerHTML);
</script>

在HTML <body>中,而不是在<head>中。当在标头中评估该javascript时,尚未加载值/页面。

答案 1 :(得分:0)

而不是使用全局var尝试将其放入具有唯一ID的隐藏输入元素中,以便您可以使用getElementByID

使用其他函数来获取它

答案 2 :(得分:0)

没有源代码,我们无法真正帮助您。

这里有三种可能性。

变量实际上可能不是全局变量 您是否在函数中使用var关键字声明了它?

可能会将变量分配给其他地方的undefined

你可能错了名字。

检查Firebug中的DOM标签,看看变量是否存在以及它的值是什么。

答案 3 :(得分:0)

您无法在td之外写信innerHTML onload,因为在td触发之前onload尚不存在。< / p>

如果你在onload函数中调用document.write,它就可以了:

<script language='javascript'>
 function onload_function() {
  alert(document.getElementById("sample_size").innerHTML);
  document.write("this is a test: " + document.getElementById("sample_size").innerHTML);
 } 
</script>