ここから本文です

JavaScript html での質問です。 超初心者です。すみません。 ラジオボタンと...

pen********さん

2019/6/1115:20:23

JavaScript html での質問です。
超初心者です。すみません。

ラジオボタンとセレクトメニューが混ざった表があり、項目を選んだ結果のvar値が検索ボタンに集約され、最終の検索ボタンのURLになるんですがセレクト

メニューをラジオボタンに変更するとなぜかその項目だけ拾わなくなります…

文章だけで申し訳ないですが、何か問題があるかもしれないものを教えて頂ければ幸いです。

閲覧数:
57
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

glo********さん

2019/6/1218:41:05

なかなか回答が付かないのは
具体性に欠けるご質問だからだと思います。

JavaScript も HTML も書かれていない...(困)。
動作しなかった環境も書かれていない...(困)。

と言うか,質問者さんに限らず,
ここに質問される方の大多数の質問は "具体性に欠ける" のです。
そこが最大の問題点!
私が今日回答した他の方の質問も全てそうです。

「"具体性に欠ける" ことがプログラミングにおいて重要でない。」
と思われているからから問題が解決しない可能性が高いのです。

"事件は会議室ではなく現場で起きている!" のですよ。
その具体的な現場の状態が忠実に把握できないと
事件は解決しないのです。


----------------------------------------------


> 何か問題があるかもしれないもの


その問題点当ては
スイカ割りのような当てずっぽうで良いと言うことでしょうか?

当てずっぽうで良いのでしたら
   「Edge や IE では RadioNodeList.value では
    ラジオボタンの選択値は取得できない。」
みたいなことでしょうかね。

つまりこんな感じ↓にしないとダメです。



<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<script>

function googleSearch(){
    var my_url = "https://www.google.co.jp/search?q=";
    var my_frm = document.forms["frm"];
    my_url += my_frm.elements["slc"].value;
    //my_url += "+" + my_frm.elements["rdo"].value;
    for(var i=0; i<my_frm.elements["rdo"].length; i++){
        if(my_frm.elements["rdo"][i].checked){
            my_url += "+" + my_frm.elements["rdo"][i].value;
            break;
        }
    }
    window.open(my_url);
}

</script>
</head>
<body>

<form name="frm">
<table cellpadding="5" cellspacing="1" border="1">
<tr>
<td>Meat</td>
<td>

<select name="slc">
<option value="beef">Beef</option>
<option value="pork">Pork</option>
<option value="chicken">Chicken</option>
</select>

</td>
</tr>
<tr>
<td>Vegetable</td>
<td>

<input type="radio" value="cabbage" name="rdo" CHECKED>Cabbage
<input type="radio" value="lettuce" name="rdo">Lettuce
<input type="radio" value="tomato" name="rdo">Tomato

</td>
</tr>
</table>
<input type="button" value="Search!" onclick="googleSearch()">
</form>

</body>
</html>



上のコードに

    //my_url += "+" + my_frm.elements["rdo"].value;

という // でコメントアウトしてある行があると思いますが
Firefox や Google Chrome ではコメントアウトせずに

    my_url += "+" + my_frm.elements["rdo"].value;

でラジオボタンの選択値が取得できて
その下の for文 は要らないのです。
しかし,
Edge や IE では取得できず undefined になるのです。

そのため,
ラジオボタン1つ1つにチェックが入っているかどうかを走査して
チェックが入っていればそのラジオボタンの value を取って来る。
みたいな処理が必要になります。

その走査処理が for文 です。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

wat********さん

2019/6/1513:16:39

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる