JavaScript getElementById 空值错误以及如何避免它

标签 javascript php html dom

我创建了一个表单,用户可以在其中输入可以添加到页面的文本区域的最小和最大数量。它生成以下代码以便使用 JScript 获取它:

$minimum .= '<div id="K'.$i.'">'.$min[$i].'</div>';
$maximum .= '<div id="H'.$i.'">'.$max[$i].'</div>';

在 JScript 中,我定义了一个循环,它将捕获上述 div 标签及其 innerHTML 作为数字并将其放入一个数组中。

var mincount = [];
var maxcount = [];
for(var k=1; k<101; k++) {
    mincount[k] = parseInt(document.getElementById("K"+k).innerHTML, 10);
    maxcount[k] = parseInt(document.getElementById("H"+k).innerHTML, 10);
}

k 被定义为最大 100。因此,我知道这就是问题所在,因为如果文本区域少于 100 个,则 getElementById 将具有空值。

所以,它给出了错误: 未捕获的类型错误:无法读取 null 的属性“innerHTML”

但它必须定义为最多 100。那么,是否有任何选项可以像这样工作:

if(mincount[k] == null) {mincount[k] = ""} // in order to avoid null values.

这是行不通的。它仍然会出错。

最佳答案

更简单的解决方案是为这些元素赋予相同的类,然后只选择具有该类的所有元素。我不明白为什么每个元素都必须有自己的 ID。

$minimum .= '<div class="K">'.$min[$i].'</div>';
$maximum .= '<div class="H">'.$max[$i].'</div>';

然后你用 JavaScript 做:

var mincount = [];
var minelements = document.querySelectorAll('.K');
for (var i = 0, l = minelements.length; i < l; i++) {
    mincount.push(parseInt(minelement[i].innerHTML, 10));
    // if the content is purely numeric, unary plus is simpler:
    // mincount.push(+minelement[i].innerHTML);
}

maxcount 相同。

或作为 @adeneo建议,如果您的 JavaScript 代码也通过 PHP 提供,并且您可以访问 $min 数组,那么就这样做

var mincount = <?php echo json_encode($min); ?>;

然后你甚至不知道如何触摸 DOM。

关于JavaScript getElementById 空值错误以及如何避免它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23046117/

相关文章:

html - 固定页脚无法正常工作

javascript - 用 javascript 更改 jquery masonry css

php - 我可以将 Javascript 条件的结果导入 PHP 变量吗?

JavaScript 变量提升解释

php - ORM 关系(可能是 Kohana 特定的)

php - Zoho Books API 添加估算

javascript - 值未传递给 jquery 代码或显示在 cfdump 中

php - 如何提高迭代 DOMDocument 的性能?

java - Eclipse 和 JavaScript

html - 点击图片提交表单