这是我可以创建的最佳示例。 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>
答案 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>