所以,我承認自己有點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