押したボタンで違う結果を出したい



0   名前: Marshi : 2006/08/25(金) 13:43  ID:sb8zLSRE
初めてjavaを触る者で、基本的な質問ですみません。

3択のクイズで、正解ボタンを押したら別のページへ
間違いボタンを押したら、「間違いです」と表示させたいのですが、
どう書けばよいのでしょうか?

フォームは
<FORM name="fo1">
質問:大阪の今夏最高気温は?
<INPUT type="button" value="35度" onClick="check_1()">
<INPUT type="button" value="36度" onClick="check_2()">
<INPUT type="button" value="37度" onClick="check_3()">
</FORM>
としてます。
この場合、たとえば「check_2」を押したときだけ
「seikai_1.html」に飛び、それ以外を押したときは
「間違いです」の小窓(OKボタン付)を出したいのです。

よろしくお願いします。

1   名前: sevi- : 2006/08/25(金) 13:43  ID:PQukhZTw
修正すると例えばこうなると思われる.

<html>
<head>
   <title>Untitled Page</title>
   <script type="text/javascript">
   <!--
   function check(button)
   {
			if(button.value != "36度")
			{
				alert("不正解です.");
				return false;
			}
			return true;
   }
   //-->
   </script> 
</head>
<body>
<form name="fo1" action="seikai_1.html" method="get">
質問:大阪の今夏最高気温は?
<input type="submit" value="35度" onclick="return check(this)">
<input type="submit" value="36度" onclick="return check(this)">
<input type="submit" value="37度" onclick="return check(this)">
</form>
</body>
</html>


が、これだけだと一問ずつコードを記述するのが大変になりすぎると思うが.
例えば以下のようにしてみるというのはどうか.
複数の質問を定義でき、出題順、回答の並び順をランダムに配置するテストコードだ.参考にしていただきたい.

<html>
<head>
   <title>Untitled Page</title>
   <script type="text/javascript">
   <!--
   
   //Q&A情報をここに格納.
   //[質問文, 正解後飛ぶURL, 正解回答, 誤答, 誤答, 誤答……]
   var list_list_qa =
   [
		["大阪の今夏最高気温は?", "seikai_1.html", "36度", "35度", "37度"],
		["小泉総理が総理就任後8月15日に某神社に参拝した回数は?", "seikai_2.html", "1回", "2回", "500021回", "4回", "0回"],
		["32bitCPUを2個積めば64bitシステムを名乗れるか?", "seikai_2.html", "名乗れません", "名乗れます", "うるさい忘れろ", "土星人ならそう解釈します", "誰か湯川専務の事も思い出してください"]
   ];
   randomSort(list_list_qa);
   
   //引数の配列の中身をランダムで入れ替える
	function randomSort(list)
	{
		var iCount = list.length;
		var iIndex;
		var obj;
		for(var i=0; i<list.length; i++)
		{
			iIndex = Math.floor(Math.random()*iCount);
			obj = list[iIndex];
			iCount--;
			list[iIndex] = list[iCount];
			list[iCount]= obj;
		}
	}
   
   function set_qa(fm)
   {
			while(fm.hasChildNodes())
				fm.removeChild(fm.lastChild);
			if(list_list_qa.length == 0)
			{
				fm.appendChild(document.createTextNode("問題がありません."));	
			}
			else
			{	
				list_qa	= list_list_qa.pop();
				var list_q = list_qa.slice(2, list_qa.length);
				randomSort(list_q);
				fm.appendChild(document.createTextNode("質問 : " + list_qa[0]));
				fm.action = list_qa[1];
				var button;
				for(var i=0; i<list_q.length; i++)
				{
					button = document.createElement("input");
					button.type = "submit";
					button.value = list_q[i];
					button.onclick = function(){return check(this)};			
					fm.appendChild(button);
				}	
			}
   }
   
   var list_qa;
   function check(button)
   {
			if(button.value != list_qa[2])
			{
				alert("不正解です.");
				return false;
			}
			return true;
   }
   
   //-->
   </script> 
</head>
<body onload="set_qa(document.forms[0]);">
<form action="about:blank" method="get">
</form>
<div>
	<a href="#" onclick="set_qa(document.forms[0]);">問題の変更</a>
</div>
</body>
</html>

2   名前: Marshi : 2006/08/25(金) 13:43  ID:sb8zLSRE
思い通り上手くいきました。
丁寧なご返答本当に有難うございました。

一覧へ戻る