ラジオボタンでリンク先を分岐するには?

[上に] [前に] [次に]
やなぎ 2000/03/13(月) 00:38:08
質問文の後に3種類のラジオボタンを作成して、どれかを選択してから
ボタンをクリックすると選んだものに応じてリンク先が変わる
というのをつくりたいと思います。
また、出来ればどれも選択されていないときにボタンをクリックした
場合にはエラーメッセージが出るようにしたいのですが、
どうしたらいいでしょうか?
ラジオボタンのvalueにURLを記述してそれを受け取ればいいのかな
と思うのですが、具体的にどう書けばよいのか、よく分かりません。本なども見てみたのですが…。勉強不足はわかっているのですが、お知恵を頂けたらと思います。

どじょう 2000/03/13(月) 00:59:22
<HTML>
<HEAD>
<TITLE>らじお</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function jump(){
    var flag = 0;
    for(i=0; i<document.forms[0].url.length; i++){
        if(document.forms[0].url[i].checked){
            flag = 1;
            window.location.href = document.forms[0].url[i].value;
        }
    }
    if(flag == 0){
        alert('ラジオボタンが選択されていません。');
    }
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<INPUT TYPE="radio" NAME="url" VALUE="http://www.1.com/">
<INPUT TYPE="radio" NAME="url" VALUE="http://www.2.com/">
<INPUT TYPE="radio" NAME="url" VALUE="http://www.3.com/">
<INPUT TYPE="button" onClick="jump();" VALUE="移動">
</FORM>
</BODY>
</HTML>

やなぎ 2000/03/13(月) 01:22:05
どじょうさん有り難うございます。上手くいきました。
ところで、ずうずうしくも再度質問なのですが、
質問が複数ある場合はどうすればいいのでしょうか。
質問1
選択肢1 選択肢2 選択肢3
答え(ボタン)
質問2
選択肢1 選択肢2 選択肢3
答え(ボタン)
  ・
  ・
こんな感じで、質問ごとに答えが見れるようになります。
質問全部を選択してからリンクというわけでは無く、1つ1つ別
なのですが、1ページに複数の質問がまとまっているのです。
上記で教えて頂いたソースを質問の数並べてNAMEの値を
変えればいいのでしょうか?
ちなみに質問の数は13個位あります。

河童 2000/03/13(月) 02:48:00
答えのペィジも同じであるなら、
<A NAME="ans1">答え1</A>
<A NAME="ans2">答え2</A>
<A NAME="ans3">答え3</A>
とし、
リンクを
<INPUT TYPE="radio" NAME="url" VALUE="http://www.1.com/#ans1">
<INPUT TYPE="radio" NAME="url" VALUE="http://www.2.com/#ans2">
<INPUT TYPE="radio" NAME="url" VALUE="http://www.3.com/#ans3">
とすればよいでしょう!

2000/03/13(月) 03:06:07
ie5でしか動作確認してないのですが・・・
<HTML>
<HEAD>
<TITLE>簡易クイズ</TITLE>
<SCRIPT LANGUAGE="JavaScript">
var point = new Array(2);
function jump(ques,ans){
    var flag = 0;
    for(i=0; i<document.forms[ques].url.length; i++){
        if(document.forms[ques].url[i].checked){
            flag = 1;
            if(document.forms[ques].url[i].value == ans){
                alert('正解どすぇ。');
                point[ques] = 1;
            }else{
                alert('はずれどすぇ。');
            }
            break;
        }
    }
    if(flag == 0){
        alert('ラジオボタンが選択されていません。');
    }
}

function end(){
    var total = 0;
    for(i=0; i<2; i++){
        if(isNaN(point[i])){point[i] = 0;}
        total += point[i];
    }
    alert(total + '点です');
}
</SCRIPT>
</HEAD>
<BODY>
Q1,白菜ではなくキュウリを主材料として漬けたキムチをなんという?
<FORM>
<INPUT TYPE="radio" NAME="url" VALUE="1">おいきむち<BR>
<INPUT TYPE="radio" NAME="url" VALUE="2">きゅむち<BR>
<INPUT TYPE="radio" NAME="url" VALUE="3">へなきむち
<INPUT TYPE="button" onClick="jump(0,1);" VALUE="解答">
</FORM>
Q2,なんたらかんたら
<FORM>
<INPUT TYPE="radio" NAME="url" VALUE="1">いや
<INPUT TYPE="radio" NAME="url" VALUE="2">正解
<INPUT TYPE="radio" NAME="url" VALUE="3">ちがうし
<INPUT TYPE="button" onClick="jump(1,2);" VALUE="解答">
</FORM>
<A HREF="javascript:end();">総合得点</A>
</BODY>
</HTML>

こうゆう事がやりたいのかな?
問題ごとにフォームを作ります.
問題数に合わせてpoint配列の数を増やしてください.
JUMP関数に問題番号(0から)と答えの番号(1〜3)を持たせます.
例 : jump(問題番号,正解番号);

初めに,結局何がしたいのか(例えばクイズとか)を書くと良いと思いますよ.
回答者もその方が考えるのが楽しいです.

やなぎ 2000/03/16(木) 01:28:55
[[解決]]
書き込み遅くなりましたが、みなさんありがとうございました。
結局最初に教えていただいたどじょうさんの
スクリプトを13個複製して(数字をつけて)
使わせていただきました。

具体的に何がしたかったかといいますと、
じつはクイズとかでは無く、教材みたいなものなんです。
(著作権について、なんですが…)
自分で買ったCDなら中の音楽をHPに載せてもいいよね。
みたいな質問文があって、それについてどう思うかを
まずラジオボタンで選んでから、解説のページを見せる
といった形のものです。
1ページにそういった事例が複数あって、解説ページは
質問×3(ラジオボタンの数)分ありました。

折角いろいろ教えて頂いたのですが、なにぶん初心者なもので、
今回は活かせませんでしたが、勉強にはなりました。
今度はクイズっぽいものにもチャレンジしてみようと思います。

[上に] [前に] [次に]