だから、私はJS初心者であることを認めますが、私が知る限り、これは機能するはずですが、そうではありません.
バックグラウンド:
3 つのリスト ボックスを含むフォームがあります。リスト ボックスの名前は、app1、db1、および db2 です。私はJavaScriptを使用して、ユーザーが追加のリストボックスを追加できるようにし、追加の選択ボックスごとに名前タグを増やしています。
ボックスという名前のアプリを追加すると、追加フィールドごとに値が適切に増加します。selects という名前の追加のデータベースを追加しようとすると、配列の最初のループで 2 番目のタグを認識できません。これにより、db2 という名前の 2 つの要素ができてしまいます。後続の各タグでは、適切に認識され、適切にインクリメントされます。
db1 タグの HTML は次のとおりです。
<select name="db1">
*options*
</select>
そしてdb2:
<select name="db2">
*options*
</select>
タグは同一です。シーケンス内の次の番号を把握するために使用している関数を次に示します (注: タグは app または db のいずれかであり、tags は 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;
}
app タグを追加すると、「app2」が返されます。db タグを検索すると、最初は「db2」、2 回目は db3 などを返します。
基本的に、私はここで何か間違ったことをしていると確信しています。