我的页面上有两个表单(min&max),它们应该提供用户可以添加的最小和最大文本字段。这就是我的代码中有问题的部分。
问题:它在Chrome/IExplorer中运行良好,但在Firefox中无法运行。问题是它报告了一个错误
类型错误:document.getElementById(…)为空
Chrome中也存在此错误,但代码有效。所以,我发现这是ID为K1、H1、K2、H2的div的内部html的问题……无论它在页面上打印出来,它都是空的。
$kx[$j] = $_POST['min'][$j];
$hx[$j] = ($_POST['max'][$j]);
$kxx .= '<div style="visibility:hidden;" id="K'.$j.'">'.$kx[$j].'</div>';
$hxx .= '<div style="visibility:hidden;" id="H'.$j.'">'.$hx[$j].'</div>';
<script type="text/javascript">
var counter = [];
var mxcounter = [];
for(var u=1; u<101; u++) {
counter[u] = parseInt(document.getElementById("K"+u).innerHTML, 10);
mxcounter[u] = parseInt(document.getElementById("H"+u).innerHTML, 10);
}
</script>
我该怎么办?
确保在构建HTML之后执行脚本块。在onLoad上执行脚本。
您还可以仔细检查生成的id是否从1变为100,以防万一。
如果div元素的数量小于循环中使用的"101",则会产生错误。然而,如果您通过javascript添加div,则可以在表单上有一个隐藏元素来保存最大计数,并为每个新的div增加计数。
function add_div() {
// your code to add div element
var max = document.getElementById("maxcount").value;
document.getElementById("maxcount").value = parseInt(max)+1;
}