JavaScript第9回ゼミ直江担当

演習解答


問1

各ファイルごとの内容

 [main.html] <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <title>フレームを利用したスライドショー</title> </head> <frameset rows="*,60">  <frameset cols="85,*">   <frame src="dammy.html" name="d_disp">   <frameset cols="50%,*">    <frame src="disp2.html" name="disp2">    <frame src="display.html" name="display">   </frameset>  </frameset>  <frame src="control.html" name="control"> </frameset> </html>
 [display.html],[disp2.html] <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <title>イメージの表示</title> </head> <body> </body> </html>
 [dammy.html] <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <title>イメージの表示</title> <script language="JavaScript" type="text/javascript"> function page(){ var selects=document.form1.menu ; var num=parseInt(selects.value)-1 ; parent.control.displayImg(num) ; } </script> </head> <body> <form action="#" name="form1"> <select name="menu" size=5 onchange="page()"> <option value="1">ページ1</option> <option value="2">ページ2</option> <option value="3">ページ3</option> <option value="4">ページ4</option> <option value="5">ページ5</option> </select> </form> </body> </html>
 [control.html] <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <title>イメージのコントロール</title> <script language="JavaScript" type="text/javascript"> var imgNum = 0; var MaxImg = 5; // イメージの数 var timerID; var delay = 2000; // 自動スライドショーの間隔 var theDocument = parent.display.document; var theDocument2 = parent.disp2.document; // MyImageオブジェクトを生成してimages配列に格納 var images = new Array(MaxImg); images[0] = new MyImage("taketomi1.jpg", "牛車1"); images[1] = new MyImage("taketomi2.jpg", "牛車2"); images[2] = new MyImage("ishigaki1.jpg", "シーサー1"); images[3] = new MyImage("sand.jpg", "初夏の砂浜"); images[4] = new MyImage("sea1.jpg", "海辺の塔"); // MyImageオブジェクトのメソッド function _getImgStr(){ var imgStr; imgStr = "タイトル:" imgStr += this.title.fontcolor("green") + "<br>"; imgStr += "<img src=\"images/" + this.imgFile + "\">"; imgStr += "<br>"; return imgStr; } // MyImageオブジェクトのコンストラクタ function MyImage(imgFile, title){ this.imgFile = imgFile; this.title = title; this.getImgStr = _getImgStr; } // イメージタグの書き出し function displayImg(num){ var numbar=num ; var html; html = "<div style='text-align:center'>"; html += images[num].getImgStr(); html += "イメージ番号:" + (numbar + 1) + "/" + MaxImg + "<br>"; html += "</div>"; theDocument.body.innerHTML = html if(numbar==0){ numbar=4 ; } else { numbar-- ; } html = "<div style='text-align:center'>"; html += images[numbar].getImgStr(); html += "イメージ番号:" + (numbar + 1) + "/" + MaxImg + "<br>"; html += "</div>"; theDocument2.body.innerHTML = html } // イメージを変更する function go(direction){ if (direction) { imgNum++; if (imgNum == MaxImg) { imgNum = 0; } displayImg(imgNum); } else { imgNum--; if (imgNum < 0 ) { imgNum = MaxImg-1; } displayImg(imgNum); } } // オートモードかどうかを調べる function checkAuto(checkBtn){ if (checkBtn.checked) { autoPlay(); } else { clearTimeout(timeID); } } // オートモードでスライドショーを実行 function autoPlay() { go(true); timeID = setTimeout("autoPlay()", delay); } </script> </head> <body bgcolor="#ffffff" onload="displayImg(0)"> <form> <div style="text-align:center"> <input type="button" name="prev" value="前へ" onclick="go(false)"> <input type="button" name="next" value="次へ" onclick="go(true)"> <input type="checkbox" name="auto" onclick="checkAuto(this)">自動 </div> </form> </body> </html>

出力結果