Javascript 字符串未获取连接的变量值

Javascript string not getting concatenated variable value?

本文关键字:变量值 连接 获取 字符串 Javascript      更新时间:2023-09-26

在HTML表单中,我正在使用jquery/javascript创建动态HTML元素。为了给动态元素提供不同的 ID,我正在使用循环迭代变量。我的想法是循环它会自动给出迭代编号作为 ID,但在 HTML 中我看到它对所有元素使用第一次迭代数字值。

例如,如果我传递 2,它会生成 2 个具有相同 ID 的控件。为什么?对我来说,JS的这种行为很奇怪。你能指导一下是什么原因造成的吗?循环适用于传递给函数的次数,但它没有将正确的数字作为 ID 的一部分显示。

  function CreateDependentForms(noOfControlsToCreats)
    {
        var itrator = 1;
        var sectionFName ="<div id=Dependent"+ itrator +"FName " +"class='"field rf-field'"><label>First Name</label><input type='"text'" required='"'" placeholder='"eg. Joe'" name='"partNerfirstname'" aria-required='"true'"></div>";
        for (;itrator<noOfDependents; itrator++)
        {               
            alert(sectionFName);
            $('#dependentfrequency').after(sectionFName);
        }
}

创建 HTML 内容的部分位于循环之外。在循环中移动var sectionFName声明将为元素生成唯一的 ID。

function CreateDependentForms(noOfControlsToCreats) {
    for (var itrator = 1; itrator < noOfDependents; itrator++) {               
        var sectionFName ="<div id=Dependent"+ itrator +"FName " +"class='"field rf-field'"><label>First Name</label><input type='"text'" required='"'" placeholder='"eg. Joe'" name='"partNerfirstname'" aria-required='"true'"></div>";
        $('#dependentfrequency').after(sectionFName);
    }
}
function CreateDependentForms(noOfControlsToCreats)
{
    var itrator = 1;
    var sectionFName ;


    for (;itrator<noOfDependents; itrator++)
    {               
 sectionName = ="<div id=Dependent"+ itrator +"FName " +"class='"field rf-field'">   <label>First Name</label><input type='"text'" required='"'" placeholder='"eg. Joe'" name='"partNerfirstname'" aria-required='"true'"></div>";       
alert(sectionFName);
        $('#dependentfrequency').after(sectionFName);
    }

}

这段代码将为您工作。由于在您提到的代码中,sectionName 被初始化一次,并且只有一次被赋予 id 1,并且没有改变。因此,您最终只有一个id。

现在,一旦执行了这一行,您最终就会一遍又一遍地使用相同的变量。我曾在PHP,Java和JS工作过,我没有看到任何例外。所以对我来说,是的,这就是它的工作原理,这是唯一的原因。

希望这有所帮助。快乐学习:)

字符串是在声明字符串时构建的。 在for循环中,sectionFName字符串"<div id=Dependent1 ..." 。 这是因为您已经声明了它。 在循环中递增itrator不会更改字符串。

for (var itrator = 1;itrator<noOfDependents; itrator++)
{
    var sectionFName ="<div id=Dependent"+ itrator +"FName " +"class='"field rf-field'"><label>First Name</label><input type='"text'" required='"'" placeholder='"eg. Joe'" name='"partNerfirstname'" aria-required='"true'"></div>";
    alert(sectionFName);
    $('#dependentfrequency').after(sectionFName);
}