• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Arrayオブジェクトとforms配列)

Arrayオブジェクトとforms配列の操作方法について

このQ&Aのポイント
  • JavaScriptのArrayオブジェクトをカスタマイズして追加したGetFromArray()メソッドでforms配列を操作したいが、エラーが発生する。
  • document.formsは配列ではないため、参照することができない
  • 他のオブジェクトをカスタマイズする必要があるかもしれない

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Minefield/Firefox 3.0b2preで再現しました。 http://developer.mozilla.org/en/docs/DOM:document.forms によるとdocument.formsは forms DOM Level 2 HTML: forms に定義されているようでMDCのドキュメントにはNodeListが返るとある一方で http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-1689064 を見ると,HTMLCollectionが返るとあります。 それならば、と HTMLCollection.prototype.GetFromArray = function(func){ //省略 }; と記述してみましたが,結論から言えばこれも失敗です。代入する地点ではエラーが出ないのですが, document.forms.GetFromArray(disp2); でそんな関数はない、と言われます。 ちなみにコレは NodeList.prototype.GetFromArray でも同様の現象になります。 参考: https://bugzilla.mozilla.org/show_bug.cgi?id=300519 https://bugzilla.mozilla.org/show_bug.cgi?id=14869 補足)当方の環境では14869のテストケースで,firstChildはgetElementsByTagNameなんてメソッドを持ちません といわれたので,検証時,document.getElementsByTagNameに書き換えてます で、私自身は良く調べていないので使い方は調べてないのですが, 結局 http://joyeur.com/2006/04/07/joyful-javascript#c000232 等ではラッパー(prototype.js - $A関数)を作成。Arrayに変換) する形を取っているようです

noname#181870
質問者

お礼

ご回答ありがとうございました。 コレ周りを取り巻く状況はわかりました。 JSの仕様なのか、実装によるものなのかはわかりませんが (タブン、IEでもエラーとなるのでJSの仕様かも)、 方針を変更したいと思います。

関連するQ&A