php变量提供的Null innerHTML仅在Firefox中不起作用


Null innerHTML provided with php variable not working in Firefox only

我的页面上有两个表单(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;
}