所以,我承认自己有点JS小白的,但据我所知,这应该是工作,这是不是。循环执行阵列和比较正则表达式
背景:
我有一个3列表框的形式。列表框被命名为app1,db1和db2。我使用javascript来允许用户添加额外的列表框,增加每个额外选择框的名称标签。
当我添加额外的命名箱的应用程序,值递增适当为每个附加字段。如果我尝试添加名为select的addtional db,它无法识别通过该数组的第一个循环中的第二个标记。这使我最终得到了2个名为db2的元素。在每个后续标签上,它都被正确识别并正确递增。
下面是DB1标记HTML:
<select name="db1">
*options*
</select>
和DB2:
<select name="db2">
*options*
</select>
的标签是相同的。这里是我用来计算序列中下一个数字的函数(注意:标签是app或db,标签是DOM中所有选择标签名称的数组,如果我检查标签,它会给我['app1', 'db1', 'db2', '']
) :
function return_select_name(tag, tags) {
matches = new Array();
var re = new RegExp(tag + "\\d+", "g");
for (var i = 0; i < tags.length; i++) {
var found = re.exec(tags[i]);
if (found != null) {
matches.push(found[0]);
}
}
matches = matches.sort();
index = parseInt(/\d+/.exec(matches.last())) + 1;
index = tag + index;
return index;
}
如果我添加一个应用程序标记,它将返回'app2'。如果我搜索了分贝标签,它会通过,DB3 2号,等等,等等
所以基本上,我敢肯定,我在这里做一些错误返回的第一次“DB2”。
这是不是很清楚你在这里试图达到什么。您是否尝试生成像'db1','db2','db3'等等一样的顺序名称?然后,如果您通过“应用程序”,想让它从“app1”开始? – arb
基本上是的。只有使用应用程序,它才能返回app2。 – Eugene
我添加了'prototypejs'标签,因为如果没有它,代码将无法工作。 – Guffa