- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Java Script 買い物フォームで elements[i] が期)
Java Script 買い物フォームの要素の作動不具合
このQ&Aのポイント
- Google(Chrome)では正常ですが、IE8 Firfox ブラウザでは2段目のメモリ覧でのラジオボタンが作動しません。
- <FIELDSET><LEGEND>タグを外すと正常に作動します。または、6より大きな数字(8など)を入れると正常作動します。
- 原因を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
elements.lengthを調べてみれば、原因がわかると想像されます。 あるいは、 var e = document.forms["calcFORM"].elements; for (i=0; i<e.length; i++) alert(i + " / " + e[i].nodeName); で添字と要素の関係を確認してみるとか?
その他の回答 (2)
- yamada_g
- ベストアンサー率68% (258/374)
回答No.3
chromeのみdocument.calcFORM.elements にfieldset要素が含まれていないようですね。 ブラウザとしてどちらの動きが正しいのか自分には不明ですが、それが原因で動作に違いが出てきてますね。 chrome以外ではfiledset要素も含まれているため、i<8としないと最後のラジオボタンまで判定処理が動きません。 修正としてはgetElementsByTagName('input')などを使用して、 input要素を全て取得→ラジオボタンかを判定→選択されていたら合算する、 という風にするのが簡単でしょうか。
質問者
お礼
カウント要素にfiledsetが含まれるとは勉強不足でした。 ありがとうございました。
- yyr446
- ベストアンサー率65% (870/1330)
回答No.2
抜本的にかえたいところだけど、 質問者さんのやり方を尊重して、 for (i=0; i<6; i++) を for(i=0;i<document.calcFORM.elements.length;i++) へ 変えてはいかが
お礼
ありがとうございました。 elements[i]でのカウントはradioボタンなどの要素だけかと思っておりましたが、 表示される nodeName をみて間違いがはっきりわかりました。