jQueryのようなものを使用すると、すべての難しい部分を処理できるため、これを行う方がはるかに簡単です。ただし、最新のブラウザを使用している場合は、次のように実行できます。
var highestNum = (function() {
var highest = 0, r = /\-(\d+)$/, i, elems = document.getElementsByName("id[]");
for(i=0; i<elems.length; i++) {
highest = Math.max(highest, +elems[i].id.match(r)[1]);
}
return highest;
});
これは、要素が潜在的に故障していることも説明しています。動作するのはかなり新しいブラウザに依存していますが(IE> = 8またはIE以外のもの)。IE6のようなものへのフォールバックサポートが必要な場合、最善の策はjQueryまたは別のそのようなライブラリを使用することです。jQueryを使用すると、ソリューションは次のようになります。
var highestNum = (function() {
var highest = 0, r = /\-(\d+)$/;
$("input[name='id[]']").each(function() {
highest = Math.max(highest, +this.id.match(r)[1]);
});
return highest;
});
更新:私は他の誰かのソリューションを少しだまして、IE6にやさしいものにしました。jQueryソリューションはまだ少し単純ですが、バニラソリューションはニーズに合うはずです。