• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Java Script 買い物フォームで elements[i] が期)

Java Script 買い物フォームの要素の作動不具合

このQ&Aのポイント
  • Google(Chrome)では正常ですが、IE8 Firfox ブラウザでは2段目のメモリ覧でのラジオボタンが作動しません。
  • <FIELDSET><LEGEND>タグを外すと正常に作動します。または、6より大きな数字(8など)を入れると正常作動します。
  • 原因を教えてください。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

elements.lengthを調べてみれば、原因がわかると想像されます。 あるいは、 var e = document.forms["calcFORM"].elements; for (i=0; i<e.length; i++) alert(i + " / " + e[i].nodeName); で添字と要素の関係を確認してみるとか?

terafield
質問者

お礼

ありがとうございました。 elements[i]でのカウントはradioボタンなどの要素だけかと思っておりましたが、 表示される nodeName をみて間違いがはっきりわかりました。

その他の回答 (2)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.3

chromeのみdocument.calcFORM.elements にfieldset要素が含まれていないようですね。 ブラウザとしてどちらの動きが正しいのか自分には不明ですが、それが原因で動作に違いが出てきてますね。 chrome以外ではfiledset要素も含まれているため、i<8としないと最後のラジオボタンまで判定処理が動きません。 修正としてはgetElementsByTagName('input')などを使用して、 input要素を全て取得→ラジオボタンかを判定→選択されていたら合算する、 という風にするのが簡単でしょうか。

terafield
質問者

お礼

カウント要素にfiledsetが含まれるとは勉強不足でした。 ありがとうございました。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

抜本的にかえたいところだけど、 質問者さんのやり方を尊重して、 for (i=0; i<6; i++) を for(i=0;i<document.calcFORM.elements.length;i++) へ 変えてはいかが

関連するQ&A

専門家に質問してみよう