그래서 나는 JS 놈의 비트가되는 것을 인정할 것이다. 그러나 내가 말할 수있는 한, 이것은 작동해야하고 그렇지 않다.배열을 반복하고 정규식과 비교하기
배경 :
나는 3 개 목록 상자 양식을 가지고있다. 목록 상자의 이름은 app1, db1 및 db2입니다. 사용자가 추가 목록 상자를 추가 할 수 있도록 자바 스크립트를 사용하여 각 추가 선택 상자의 이름 태그를 늘립니다.
추가로 이름이 지정된 응용 프로그램 상자를 추가하면 값이 추가 필드마다 올바르게 증가합니다. select라는 addtional db를 추가하려고하면 배열을 통해 첫 번째 루프의 두 번째 태그를 인식하지 못합니다. 이로 인해 DB2라는 이름의 2 개의 요소가 생깁니다. 각 후속 태그에서 올바르게 인식되고 올바르게 증가합니다.
<select name="db1">
*options*
</select>
및 DB2 :
<select name="db2">
*options*
</select>
태그가 동일한 여기
은 DB1 태그의 HTML입니다. 다음은 시퀀스의 다음 숫자를 알아 내기 위해 사용하는 함수입니다 (태그는 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;
}
app 태그를 추가하면 'app2'가 반환됩니다. db 태그를 검색하면 처음에는 'db2', 2 등으로는 db3 등이 반환됩니다.
그래서 기본적으로 여기서 뭔가 잘못하고 있다고 확신합니다.
여기에서 성취하고자하는 것은 분명하지 않습니다. 'db1', 'db2', 'db3'... 등의 순차 이름을 생성하려고합니까? 그런 다음 'app1'을 전달하면 app1에서 시작하고 싶습니까? – arb
기본적으로 예. 앱에서만 app2가 반환되어야합니다. – Eugene
'prototypejs' 태그를 추가했습니다. 코드가 없으면 코드가 전혀 작동하지 않습니다. – Guffa