0

コンソールで次のことが起こるのはなぜですか? または私はindexOfを誤用していますか?

document.forms:

[
<form id=​"form-0" name=​"form-0">​…​&lt;/form>​
, 
<form id=​"form-1" name=​"form-1">​…​&lt;/form>​
, 
<form id=​"form-2" name=​"form-2">​…​&lt;/form>​
]

document.forms.indexOf["form-0"]:

TypeError: Cannot read property 'form-0' of undefined
4

5 に答える 5

1

document.formsですHTMLCollection。配列ではありません。そのため、メソッドはありませんindexOf

あなたはそれを使用して変換することができますArray.prototype.slice.call

var formsArr = Array.prototype.slice.call(document.forms);

ただし、これindexOfは一般的にサポートされているわけではないことに注意してください。しかし、あなたが何をしようとしているのか完全にはわかりませんので、とにかくそれは必要なアプローチではないかもしれません。

于 2011-05-13T16:22:43.780 に答える
1

間違った構文を使用しています... indexOf はメソッドであるため、括弧ではなく括弧を使用する必要があります。

someString.indexOf("form-0")

オブジェクトを使用すると、ブラケットを使用してオブジェクトを簡単にリクエストできます。

document.forms["form-0"]
于 2011-05-13T16:18:42.767 に答える
1

Document.forms はコレクションです。コメントに示されているように、フォームの番号が必要な場合は、質問が残ります。どの時点でその番号が必要ですか? とにかく、フォームの配列を作成できます。

var allforms = document.getElementsByTagName('form'), 
    formsArray = [];
for (var i=0;i<allforms.length;i++){
   if (allforms[i].id.match(/\d+$/)){
       var indexval = parseInt(allforms[i].id.replace(/(.+)(\d+)$/,'$2'),10);
       formsArray[indexval] = allforms[i];
   }
}

これで、すべてのフォームへの参照を含む配列ができました。各フォームには、ID を介して指定したフォーム番号を反映するインデックス値があります。などへのformsArray[0]参照が含まれています。forms['form-0']formsArray[1]forms['form-1']

于 2011-05-13T16:42:22.857 に答える
0

JavaScript を使用してフォームの要素にアクセスする場合は、document.myform.elements[i] を使用する必要があります。ここで、i は要素の位置です。このJavascript フォーム オブジェクト - プロパティとメソッドのチュートリアルを参照してください。indexof は JavaScript 文字列オブジェクトのメソッドです。

于 2011-05-14T08:29:36.297 に答える
0

ID で要素を取得しようとしている場合は、ID を直接使用してください。

document.forms['form-0'];

そのインデックスが必要な場合は、既に ID に含まれているように見えます。パーツを外すだけ"form-"

var index = 'form-0'.replace('form-','');

または、要素がある場合は、その ID プロパティを介して同じことを行います。

var myform = document.forms['form-0'];
var index = myform.id.replace('form-','')
于 2011-05-13T16:25:03.573 に答える