つまらない質問ですがどうか教えてください。

<form name="myform">



<INPUT TYPE="RADIO" NAME="R1" VALUE="1">関連あり</INPUT>
<INPUT TYPE="RADIO" NAME="R1" VALUE="2">関連なし</INPUT>
<INPUT TYPE="RADIO" NAME="R1" VALUE="3">不明</INPUT>
</form>

上記のようなラジオボタンを作ったのですが、
このラジオボタンのチェックされた値を取得するには
document.myForm.cGyoumu.value
ではできないのでしょうか?
LOOPさせながらdocument.myForm.elements(i).checked
で探さないと取得できないのでしょうか?
同じフォーム内にラジオボタンが複数あるため、
この方法はあまりやりたくありません。
ほかに方法がありましたら、どうか教えてください。

A 回答 (2件)

こんばんはkobayanさん、xruzです。


たしかに一つ一つチェックするのは苦労しますね。
こんなチェック方法もありますよ、ご参考にしてください。
(Ie5.5sp2、NN4.75、NN6.1動作確認済み)

<Html>
<Head>
<Title>radiocheck2</Title>
</Head>
<Script Language="JavaScript">
<!--
var elm=new Array();
var objForm;
function setRadioElements(ce) {
objForm=document.frm; // ここにフォームオブジェクトを指定してね
var k=0;
with(objForm){
for(var i=0;i<elements.length;i++) {
if(elements[i].type==ce) {
var p=(elm.toString()).indexOf(elements[i].name,0);
if(p==(-1)) elm[k++]=elements[i].name;
}
}
}
}
function rck(rd) {
for(var i=0;i<rd.length;i++) if(rd[i].checked) return rd[i].value;
return "";
}
function radioCheck() {
var trg="document."+objForm.name;
for(var i=0;i<elm.length;i++) {
alert(elm[i]+"\n"+rck(eval(trg+"."+elm[i])));
}
}
//-->
</Script>
<Body onLoad="setRadioElements('radio');">

<form method="post" name="frm">
<input type="radio" name="r1" value="01" checked>val1<br>
<input type="radio" name="r1" value="02">val2<br>
<input type="radio" name="r1" value="03">val3<br>
<hr>
<input type="radio" name="r2" value="11">val1<br>
<input type="radio" name="r2" value="12">val2<br>
<input type="radio" name="r2" value="13">val3<br>
<hr>
<input type="radio" name="r3" value="21">val1<br>
<input type="radio" name="r3" value="22">val2<br>
<input type="radio" name="r3" value="23" checked>val3<br>
<hr>
<input type="button" value="radioElements AutoCheck" onClick="radioCheck();">
</form>
</Body>
</Html>

フォームオブジェクトだけは指定してください、がんばってくださいね。
(汚いソースでごめんなさい)
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
まだJavaScript初心者の私にはちょっと難しいですが、がんばってみます。

お礼日時:2001/10/23 09:56

ラジオボタンにはvalueというプロパティが存在しないので、ループでまわすしかないと思いますよ。



for (i=0; i<document.myForm.R1.length; i++)
{
if (document.myForm.R1[i].checked) {
チェックされていたときの処理
}
}
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
やはり無理なんですね。
潔くloopでまわします。

お礼日時:2001/10/22 18:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報