使用 getElementsByClassName 时未调用 innerHTML

innerHTML not getting called when using getElementsByClassName

我有一堆 class 名称为 "display" 的段落。我想要做的是获取表单输入值(表单是名称 "inputForm")并通过 innerHTML 将这些值分配给段落。问题是 for 循环永远不会执行。

如有任何帮助,我们将不胜感激。谢谢

function displayFormInput() {
    var formElements = document.forms["inputForm"].getElementsByTagName("input");
    var elements = document.getElementsByClassName('display');
    for (var i; i < elements.length; i++) {
        elements[i].innerHTML += formElements[i].value;
        alert(i); // never gets called
    }
}

您忘记在 for 循环语句中将 i 初始化为零。

为你的 for 循环试试这个:

for (var i=0; i < elements.length; i++) {
   elements[i].innerHTML += formElements[i].value;
   alert(i); // never gets called
}

在循环的初始化表达式中,您声明了变量 i 而没有为其赋值,这意味着它的值设置为 undefined。因此,循环的条件始终为假:undefined < elements.length,因此永远不会执行该语句。

for ([initialization]; [condition]; [final-expression])
   statement

您可以通过声明变量并为其赋值来解决此问题:var i = 0.