Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在它们中间增加输入字段名_Javascript_Php_Cakephp - Fatal编程技术网

Javascript 如何在它们中间增加输入字段名

Javascript 如何在它们中间增加输入字段名,javascript,php,cakephp,Javascript,Php,Cakephp,我正试图在我的项目中实现这个扩展表单功能。由于我使用CakePHP命名约定进行编译,因此在扩展表单中,我有两个字段名: [学生][0][年龄] [学生][0][年级] 该脚本不起作用,因为它只在字段名的末尾追加计数器,类似如下:fieldName+counter,而正如您可能猜到的,我正在尝试递增,如下所示: [学生][1][年龄] [学生][1][年级] [学生][2][年龄] [学生][2][年级] 我是Javascript新手,希望有人能建议如何解决这个问题 HTML: 年龄 級別

我正试图在我的项目中实现这个扩展表单功能。由于我使用CakePHP命名约定进行编译,因此在扩展表单中,我有两个字段名:
[学生][0][年龄]
[学生][0][年级]

该脚本不起作用,因为它只在字段名的末尾追加计数器,类似如下:fieldName+counter,而正如您可能猜到的,我正在尝试递增,如下所示:
[学生][1][年龄]
[学生][1][年级]

[学生][2][年龄]
[学生][2][年级]

我是Javascript新手,希望有人能建议如何解决这个问题

HTML:




年龄 級別 请选择 一级 二级
Javascript:

    var counter = 0;
function moreFields() {
    counter++;
    var newFields = document.getElementById('readroot').cloneNode(true);
    newFields.id = '';
    newFields.style.display = 'block';
    var newField = newFields.childNodes;
    for (var i=0;i<newField.length;i++) {
        var theName = newField[i].name
        if (theName)
            newField[i].name = theName + counter;
    }
    var insertHere = document.getElementById('writeroot');
    insertHere.parentNode.insertBefore(newFields,insertHere);
}
var计数器=0;
函数moreFields(){
计数器++;
var newFields=document.getElementById('readroot').cloneNode(true);
newFields.id='';
newFields.style.display='block';
var newField=newFields.childNodes;

对于(var i=0;i你必须替换这一行,如下所示

你的:

newField[i].name = theName + counter;
新的:

newField[i].name = "[Student][" + counter + "][" + theName + "]";
我用你的脚本制作了一个工作示例页面。请检查以下链接


您必须按如下方式替换这一行

你的:

newField[i].name = theName + counter;
新的:

newField[i].name = "[Student][" + counter + "][" + theName + "]";
我用你的脚本制作了一个工作示例页面。请检查以下链接


我意识到字段名实际上是这样的:“data[Student][0][age]”,因此我在相应的行中添加了“data:”data[Student][“+”counter+”][“+theName+”]”。但它仍然不起作用。如果答案有帮助,您可以将其作为正确答案。我是否正确地说,上面的变量theName包含整个字段名,因为它从子节点获取整个字符串?因此,如果我们附加:“data[Student][“+counter+”][“+theName+”]””名称将包含如下内容的整个字符串?:data[Student][0][data[Student][0][age]]“theName”取自您已经放置的字段。例如,在该字段中为“cd”将被带到该位置。因此,正如您所说的,第一组表单元素需要作为引用放置。但在本例中,您看到的所有字段都将由javascript加载。因此,无需担心。所有可见字段都将以与您期望的相同格式创建。请使用firebug检查我的url。当我使用演示fo时,成功地实现了代码rm.但当我使用我的时,似乎无法定位字段名,因为控制台说未定义。我想这是因为div?我意识到字段名实际上是这样的:“数据[Student][0][age]”,所以我相应地在行中添加了“data:”数据[Student][“+计数器+”][“+名称+”]””。但它仍然不起作用。如果答案有帮助,您可以将其作为正确答案。我是否正确地说,上面的变量theName包含整个字段名,因为它从子节点获取整个字符串?因此,如果我们附加:“data[Student][“+counter+”][“+theName+”]””名称将包含如下内容的整个字符串?:data[Student][0][data[Student][0][age]]“theName”取自您已经放置的字段。例如,在该字段中为“cd”将被带到该位置。因此,正如您所说的,第一组表单元素需要作为引用放置。但在本例中,您看到的所有字段都将由javascript加载。因此,无需担心。所有可见字段都将以与您期望的相同格式创建。请使用firebug检查我的url。当我使用演示fo时,成功地实现了代码但是当我使用我的时,似乎无法定位字段名,因为控制台说未定义。我想这是因为div?