• ベストアンサー

なぜエラー?

いつもコピペでjavascriptを活用しています。 (^^; 下記の2個のRADIOボタンのうち1個を削除するとエラーになります。なぜ? <script Language="JavaScript"> <!-- function set( n ) { document.main.Submit.value = document.main.shori[n].value; } // --> </script> <FORM name="main"> <INPUT TYPE="RADIO" NAME="shori" VALUE="修正" onClick="set(0);" CHECKED> 修正 <INPUT TYPE="RADIO" NAME="shori" VALUE="複写" onClick="set(1);"> 複写 <INPUT TYPE="SUBMIT" NAME="Submit" > </FORM>

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

  • ベストアンサー
  • s_doc
  • ベストアンサー率24% (93/377)
回答No.3

INPUTオブジェクトはタイプを区別しませんので、 同名でhiddenタイプのダミーを入れて常に2つ以上になるようにしてやると、 関数を改造せずに使えます。 <INPUT TYPE="hidden" NAME="shori" VALUE="">

s-holmes
質問者

お礼

回答ありがとうございました。 <INPUT TYPE="hidden" NAME="shori" VALUE=""> これを入れて、正常に動作しました。 コピペユーザーとしては、これをまず採用させていただきました、 (^^;

その他の回答 (2)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

「ラジオボタンを1つにしてしまうと配列として処理できなくなる」というのは、No.1のPrynneさんの通りです。 ラジオボタンの項目数を変えることが頻繁にあるならば、JavaScriptの方まで変更するのは面倒ですよね。 このような場合は、ラジオボタンが複数でも単数でも処理できるようにJavaScriptを書いておくと便利です。 配列かどうかの判別は length プロパティがあるかどうかで分かりますので、次のように変更してください。 function set( n ) {   if (document.main.shori.length) {  // 配列時の処理     document.main.Submit.value = document.main.shori[n].value;   }   else {  // 単数時の処理     document.main.Submit.value = document.main.shori.value;   } } # コピーする場合は、全角スペースを半角スペースかタブに変換してください。

s-holmes
質問者

お礼

回答ありがとうございました。 >配列かどうかの判別は length プロパティがあるかどうかで分かりますので いろいろなサンプルで「length」が出てくる意味がやっと少し理解できました。 (^^;

noname#3345
noname#3345
回答No.1

ひとつになると配列にならなくなっちゃうからでしょう。 shoriという名前のradioボタンが複数あることにより、syori[n]という配列として扱えます。 document.main.Submit.value = document.main.shori[n].value; ここで、syori[n]と存在しない配列指定しているからエラーになるわけです。 document.main.Submit.value = document.main.shori.value; としてやれば、解決できます。

s-holmes
質問者

お礼

回答ありがとうございました。 >ひとつになると配列にならなくなっちゃうからでしょう。 「配列」という言葉が、プログラミングを知らない私には、今だに、ハードルが高い・・。 (^^;

関連するQ&A

  • ラジオボタンでreadonlyの切替え

    ラジオボタンでreadonlyの切替えをしたいのですが、どうもうまくいきません。ラジオボタンの値の拾い方でつまづいているようです。 <script Language="JavaScript"> <!-- function set( n ) { document.main.Submit.value = document.main.elements[n].value; document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor; document.main.年月日.value = 'やっほ'; document.main.年月日.style.background = 'white'; if (document.main.shori.value = '複写'){ document.main.年月日.readOnly = ''; alert(document.main.shori.value); } else if (document.main.shori.value = '修正'){ alert(document.main.shori.value); document.main.年月日.readOnly = ture;} } // --> </script> <FORM NAME=main ACTION="★" METHOD="POST"> <INPUT TYPE="RADIO" NAME="shori" VALUE="修正" CHECKED onClick="set(0);">修正 <INPUT TYPE="Radio" NAME="shori" VALUE="複写" onClick="set(1);">複写<BR> <INPUT TYPE="text" NAME="年月日" SIZE="20" VALUE="" readonly style="background-color : #FFCCCC;" style="ime-mode: inactive"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

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

    下記は普通に動きますが、ラジオボタンの内容をデータベースによって変更しているためボタンが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>

  • 選択したたラジオボタンの値をSUBMITボタンに

    選択したたラジオボタンの値をSUBMITボタンの名前として自動的に替えたいのですが、助言をいただけますか。 イメージは下記です。★の部分に、クリックごとにradioの値を入れたいのです。 <script Language="JavaScript"><!-- function set() { n = document.myFORM.Radio.value; } // --> </script> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onclick="set()" CHECKED> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★"></form>

  • 選択によってsubmitボタンの色を変える

    先程関連質問の回答をいただいた者なのですが、ラジオボタンの内容によってsubmitボタンの色を変えるところまで実現したいのですが、東京ならsubmitボタンはピンク、大阪ならsubmitボタンはブルーにしたいと思います。この場合は、submitボタンのところでIF文で分岐させればいいものでしょうか。 <html> <head> <script Language="JavaScript"> <!-- function set( n ) { document.myFORM.Submit.value = document.myFORM.elements[n].value; } // --> </script> </head> <body onLoad="set(0);"> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onClick="set(0);" STYLE="background-color:pink" checked> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪" onClick="set(1);" STYLE="background-color:blue"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★" STYLE="background-color:pink"> </form> </body> </html>

  • ラジオボタンとonchange

    質問が2つあります。 1、下記が正常に動きません。どこがおかしいのでしょう・・ (^^; 2、下記のような内容で、選択肢が増えた時に、もっと簡単に書く方法が知りたい。 <script Language="JavaScript"><!-- function set() { uriage = document.main.売上.value; omake = document.main.クーポン使用.value; if(document.main.クーポン.value = 1) {document.main.料金.value = uriage ;} else if(document.main.クーポン.value = 2) {document.main.料金.value = uriage-omake ;} } // --> </script> <FORM name="main" ACTION="★" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="売上" SIZE="-1" VALUE="1500"> <INPUT TYPE="HIDDEN" NAME="クーポン使用" SIZE="-1" VALUE="750"> <INPUT TYPE="RADIO" NAME="クーポン" VALUE="1" onChange="set(this)">クーポン使用しない<BR> <INPUT TYPE="RADIO" NAME="クーポン" VALUE="2" onChange="set(this)">使用する<BR> <P> <INPUT TYPE="TEXT" NAME="料金" SIZE="12"> <INPUT TYPE="SUBMIT" NAME="SUBMIT_BUTTON" VALUE="送信"></TD> </form>

  • 複数のラジオボタン選択肢によりsubmitを押せなくする

    初めて質問させていただきます。 ラジオボタンが下記の選択状態の時だけ「送信(submit)」ボタンを enable で表示させたいです。 1:● 2:○ 1:● 2:○ それ以外の選択肢では「送信(submit)」ボタンを disabl で押せないようにしたいです。 調べて、近い動作にはなりましたが、javascriptに関して 殆ど知識がないため、これから先がさっぱりわかりません。 ぜひ教えを乞いたく参りました。お知恵をお貸しください<(__)> どうぞ宜しくお願い致します。 <HTML> <HEAD> <script type="text/javascript"><!-- function unlock1(el){el.form.send.disabled=false;} function unlock2(el){el.form.send.disabled=true;} //--> </script> <form> 1:<input type="radio" name="radio1" value="1" onClick="unlock1(this)"> 2:<input type="radio" name="radio1" value="2" onClick="unlock2(this)"><br> 1:<input type="radio" name="radio2" value="1" onClick="unlock1(this)"><br> 2:<input type="radio" name="radio2" value="2" onClick="unlock2(this)"><br> <input name="send" type="submit" value="送信" disabled > </form> </BODY> </HTML>

  • 名無しformの操作

    以下のような、元々名前のないformが複数ある場合にボタンイベントで発生した共通のtest()関数内で処理を行う場合、どのフォームか識別できる方法はあるのでしょうか? テスト1、をクリックした場合、テスト1のフォームの操作を行いたいです。 <script ....... function test(???) { document.どのフォームかわからない.action="/index.cgi"; document.どのフォームかわからない.a.value="1"; document.どのフォームかわからない.submit(); } </script> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト1" onclick="javascript:test(???)"> </form> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト2" onclick="javascript:test(???)"> </form> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト3" onclick="javascript:test(???)"> </form>

  • Firefoxのdisabledプロパティのバグ?

    複数のラジオボックスがあり、すべてのラジオボタンで 「YES」がチェックされた時にだけ、submitボタンが 有効になるようJavaScriptで制御できればと思ってます。 素人ながら以下のようなJavascriptにしたところ、 IEやSafari、Chromeでは意図した通り動作しましたが、 ただFirefoxのみボタンがdisabledになったまま有効になりませんでした。 解決策がわかる方がいらっしゃればご教授お願いできればと思います。 よろしくお願い致します。 <script type="text/javascript"> <!-- function check() { if (form1.radio1[0].checked && form1.radio2[0].checked && form1.radio3[0].checked) { form1.send.disabled = false; } else { form1.send.disabled = true; } } ; //--> </script> <form name="form1"> <input type="radio" name="radio1" value="1" >YES <input type="radio" name="radio1" value="2">NO <input type="radio" name="radio2" value="1">YES <input type="radio" name="radio2" value="2">NO <input type="radio" name="radio3" value="1" onClick="check()">YES <input type="radio" name="radio3" value="2">NO <input type="button" name="send" value="GO" onclick="location.href='hogehoge.html'" disabled="disabled"> </form>

  • 複数のラジオボタンのチェック

    複数のラジオボタンが全て選択されているかどうかのチェックのJavaScriptをすっきりした形で書くのは、どうしたらいいでしょうか? 下記のようですと、ダラダラと記述するようになってしまいます。 どなたかご教授ください。 --------------------------------------- <script type="text/javascript"> function insert_onClick() { j=0; for (i=0 ;i < document.F1.a11.length ; i++){ if (document.F1.a11[i].checked) { j=1; } } } </script> <form action="check.php" name="F1" onsubmit="return insert_onClick()"> 各valueは0~4まであります <input type="radio" name="a11" value="0"> <input type="radio" name="a12" value="0"> <input type="radio" name="a21" value="0"> <input type="radio" name="a22" value="0"> <input type="radio" name="b11" value="0"> <input type="radio" name="b12" value="0"> <input type="radio" name="b21" value="0"> <input type="radio" name="b22" value="0"> ---------------------------------------

  • 動画の入れ替えについて

    お世話になります 以下のような画像入れ替えを使ってフラッシュなどの動画入れ替えは可能なのでしょうか 宜しくお願いします <SCRIPT LANGUAGE="JavaScript"> <!-- JavaScript非対応ユーザーの為に function irekaeA(){ if (document.form1.pars[0].checked){ document.parsga.src="3-1.jpg" }else{ if (document.form1.pars[1].checked){ document.parsga.src="3-2.jpg" }else{ if (document.form1.pars[2].checked){ document.parsga.src="3-3.jpg" }else{ if (document.form1.pars[3].checked){ document.parsga.src="3-4.jpg" }else{ if (document.form1.pars[4].checked){ document.parsga.src="3-5.jpg" }else{ document.parsga.src="3-6.jpg" } } } } } } // --> </SCRIPT> <FORM NAME="form1"> <INPUT TYPE="radio" NAME="pars" VALUE="pars1"onclick="irekaeA()" CHECKED>sample1 <INPUT TYPE="radio" NAME="pars" VALUE="pars2"onclick="irekaeA()">sample2 <INPUT TYPE="radio" NAME="pars" VALUE="pars3"onclick="irekaeA()">sample3 <INPUT TYPE="radio" NAME="pars" VALUE="pars4"onclick="irekaeA()">sample4 <INPUT TYPE="radio" NAME="pars" VALUE="pars5"onclick="irekaeA()">sample5 <INPUT TYPE="radio" NAME="pars" VALUE="pars6"onclick="irekaeA()">sample6 </FORM><BR> <IMG SRC="3-1.jpg" NAME="parsga" width="550" height="405">

専門家に質問してみよう