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