新しく質問する

for ( i = 0; i ・・の使い方?

役に立った:0件
  • 質問者:s-holmes
  • 投稿日時:2003/07/29 07:47
  • 困り度:困ってます
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

下記は普通に動きますが、ラジオボタンの内容をデータベースによって変更しているためボタンが1個だけの場合があります。その場合にもエラーにならない書き方についてアドバイスいただけないでしょうか。

<SCRIPT language=JavaScript>
function set( n ) {
for ( i = 0; i < document.main.shori.length; i++ ) {
if ( document.main.shori[i].checked ) {
shori_value = document.main.shori[i].value
}
}
alert(shori_value)
}
</SCRIPT>
<body onLoad="set(0);">
<FORM NAME=main>
<INPUT TYPE="RADIO" NAME="shori" VALUE="1" onClick="set(0);" CHECKED>1 
<INPUT TYPE="RADIO" NAME="shori" VALUE="2" onClick="set(1);">2
</form>

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.1ベストアンサー20pt

  • 回答者:lead1976
  • 回答日時:2003/07/29 09:05

おはようございます。
スクリプトを、以下のようにしてみてはいかがでしょうか。

var shori_value;

function set( n ) {
if (document.main.shori.length){
for ( i = 0; i < document.main.shori.length; i++ ) {
if ( document.main.shori[i].checked ) {
shori_value = document.main.shori[i].value;
}
}
}
else {
if(document.main.shori.checked){
shori_value = document.main.shori.value;}
}
alert(shori_value)
}

上では、if(document.main.shori.length){}という条件で条件分岐を設定しています。 document.main.shori.lengthは、フォーム部品のラジオボタンが配列としてソートされている場合には真を返しますので、複数のラジオボタンが並んでいるときにはこれ以下の処理を実行します。 もし、ラジオボタンが一つしかない場合は、それは配列としてソートされないため、document.main.shori.lengthは未定義となり、偽を返すはずなので、そこでエラーを回避できると思います。
あとは、else文でラジオボタンが一つのケースで、そのラジオボタンがチェックされているかどうかと、チェックされている場合にそのvalue値を返す処理を別に用意してやれば良いのではないでしょうか。

参考になれば幸いです。 見当違いでしたらごめんなさい。

通報する

この回答へのお礼

回答ありがとうございました。

>document.main.shori.lengthは、フォーム部品のラジオボタンが配列としてソートされている場合には真を返しますので

上記丁寧な解説ありがとうございました。
自分で書いてはいても、コピー多用で、意味がわかっていない状態であることがよくわかりました。 (^^;

おかげ様で目的が達成できました。

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter