• ベストアンサー

ソースコードが読めません

html> <head> <title>スクールバス時刻表</title> <script language="JavaScript"> <!-- baseURL = "image1/"; ext = ".gif"; (new image1()).src = baseURL + "6.gif"; (new image1()).src = baseURL + "7.gif"; (new image1()).src = baseURL + "8.gif"; (new image1()).src = baseURL + "9.gif"; function realTime(){ dt = new Date(); h = "0" + dt.getHours(); h = h.substring(h.length-2,h.length); m = "0" + dt.getMinutes(); m = m.substring(m.length-2,m.length); s = "0" + dt.getSeconds(); s = s.substring(s.length-2,s.length); times = [h.charAt(0),h.charAt(1),m.charAt(0),m.charAt(1),s.charAt(0),s.charAt(1)]; for (i=0; i<6; i++) document.images["RT"+i].src = baseURL + times[i] + ext; } //--> </script> </head> <body onload="setInterval('realTime()',1000)"> <table border="2" bordercolor="powderblue" cellspacing="1" width="450"> <tr bgcolor="black"><th><font color="powderblue" size="4">現在の時刻 </font> <td rowspan="2" bgcolor="white"> <font size=2> スクールバスの時刻表・運行表です。お近くのバス停をご利用ください。</font> </td> </tr> <tr> <td nowrap bgcolor="black"> <img src="image1/0.gif" name="RT0"> <img src="image1/1.gif" name="RT1"> <img src="image1/kugiri.gif"> <img src="image1/2.gif" name="RT2"> <img src="image1/3.gif" name="RT3"> <img src="image1/kugiri.gif"> <img src="image1/4.gif" name="RT4"> <img src="image1/5.gif" name="RT5"> </td> </tr> </table> <p> <table border="0" bgcolor="powderblue" cellpadding="5" width="450"> <tr> <td style="font-size:15px;line-height:130%" align="center" bgcolor="#FFFFF0"> ▼東本町方面   ▼学校町方面   ▼ニュータウン方面 </td></tr></table> </body> </html> 本当はいけないのでしょうけど、一応ソースコードを全部貼り付けてみました。 この方がプログラムの全体像が見やすいと思いまして。 それでは、質問です。 (new image1()).src = baseURL + "6.gif"; (new image1()).src = baseURL + "7.gif"; (new image1()).src = baseURL + "8.gif"; (new image1()).src = baseURL + "9.gif"; 冒頭のこの部分ですが、画像を一時ファイルとして読み込む設定と本には書かれているのですが、今一何を言っているのか分かりません。 新しいImage()メソッドを作ってそこに格納しているんですよね。でも、何故グラフィックが指定されているのでしょうか。 times = [h.charAt(0),h.charAt(1),m.charAt(0),m.charAt(1),s.charAt(0),s.charAt(1)]; for (i=0; i<6; i++) document.images["RT"+i].src = baseURL + times[i] + ext; <img src="image1/0.gif" name="RT0"> <img src="image1/1.gif" name="RT1"> <img src="image1/kugiri.gif"> <img src="image1/2.gif" name="RT2"> <img src="image1/3.gif" name="RT3"> <img src="image1/kugiri.gif"> <img src="image1/4.gif" name="RT4"> <img src="image1/5.gif" name="RT5"> これは初期値の指定でいいのでしょうか。でも、わざわざこれをする必要性があるのですかね。 いきなり、バンッと時刻を表示できないものなのでしょうか。 お訊きしたいのは以上の3点です。 どうか宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

質問1 時刻表示を秒単位で(画像文字を用いて)行っているので、画像を先に呼んでおかないとうまく表示できないことがある。 (デジタルの秒表示が、でなくなる可能性を回避) 質問2 初期設定ではありません。 function realTime(){ の中にあるのは、その時の時刻を表示するファンクションです。 文字を画像の文字に変換して表示していると思われます。 質問3 時計のようにリアルタイムで時刻を表示しているので、一度表示すれば終わりというわけにはいきません。 もちろん、最初に表示してお仕舞いという風にもできますが、作者がこの方法を選んだのでしょう。 (余所見や立ち話をしていても、常に、正しい時刻が表示されている。) 表示を画像文字にしなければ、スクリプトはもっと簡単になります。

persona
質問者

お礼

的確な解答を頂きまして、ありがとうございます。 なるほど。解説してもらえると凄く良く分かります。 でも、本当はこれくらい分からないといけないんでしょうけどね。 反省しなければいけませんね。 どういうやり方をすれば、ソースコードの内容を読み取れるようになれるのでしょう。 勿論、ソースコードが行っている内容を理解しなければいけませんね。 そのためには数をこなすのがいいんでしょうか。 失礼ながら、fujillinさんは業界人ではなくてこのソースコードを理解したわけですよね。 大変凄い事だと思うのですが、どうすればfujillinさんのようになれるのでしょうかね。 個人的な見解ではやはり数を多くこなすしか挙げられないんですけど。 他にもありますかね。 まぁ、頑張り次第という事にしておきますか。

その他の回答 (2)

noname#84373
noname#84373
回答No.3

尊敬する人にいつも指摘されているので、 チェックするようにしようと心がけたいと・・・・。 ということで、まずHTMLのチェックを! http://openlab.ring.gr.jp/k16/htmllint/htmllint.html とか http://validator.w3.org/ などなど。

persona
質問者

お礼

どうもです。 ソースコード全部貼り付けてみたんですけど、チェックできませんでした。 多分初版が2002年ですからいろいろ変わっているかもしれませんね。 いや、変わっているでしょうね。 ちょっと一念発起したもので、テキストは自分がプログラマーを目指していた時代のものになってしまいました。 またお世話になるかもしれませんが、1つ宜しくお付き合いの程を。

noname#84373
noname#84373
回答No.2

ちと割り込み! そのコードは古いというか間違いがあるとか・・・・ fujillinさんならそれを直して、さらに極小プログラムにしてくれるかも?!^^;

persona
質問者

お礼

レスを頂き、ありがとうございます。 今日はお逢いするのはこれで4度目ですね。 前回は助けてもらいまして、感謝しています。 この本の初版は2002年ですね。 ソースコードが古いですか。間違いがあるとはどういう事でしょうか。 _pipi_さんは、fujillinさんとお知り合いなのですか。 何か訊いてばかりですね。申し訳ありません。 確かに、このプログラムのソースコードは長いと思いますけど。 短くなるものなのでしょうか。 まぁ、答えはfujillinさん次第ですかね。 無理なお頼みはしないので、悪しからず。

関連するQ&A

  • 何故にー2なのか

    <script language="JavaScript"><!-- baseURL = "image/"; ext = ".gif"; dt = new Date(); h = "0" + dt.getHours(); h = h.substring(h.length-2,h.length); m = "0" + dt.getMinutes(); m = m.substring(m.length-2,m.length); document.write("<img src='"+baseURL+h.charAt(0)+ext+"'>"); document.write("<img src='"+baseURL+h.charAt(1)+ext+"'>"); document.write("<img src='"+baseURL+"hour.gif'>"); // 時 document.write("<img src='"+baseURL+m.charAt(0)+ext+"'>"); document.write("<img src='"+baseURL+m.charAt(1)+ext+"'>"); document.write("<img src='"+baseURL+"minute.gif'>"); // 分 // --></script> 本当に質問ばかりですみません。 自分でも一応考えに考えて、それでも分からないからここに書いているという事だけはご理解して頂きたいと思う次第です。 それで、肝心な質問は、 h = "0" + dt.getHours(); h = h.substring(h.length-2,h.length); と m = "0" + dt.getMinutes(); m = m.substring(m.length-2,m.length); の substringの部分で h.lengthとm.lengthにそれぞれー2している事です。 getHours()メソッドからは、0~23の値が getMinutes()メソッドからは、0~59の値が得られますよね。 という事は、h.lengthは24、m.lengthは60となるんでしょうか。 絵は0から9までしかありません。 ちなみにsubstring(△,▲)メソッドは△から▲までの文字列を返します。 時計の場合時間を表す10の桁は1か2. 同じく分を表す10の桁は1~5ですよね。 そこで何故ー2をしなければいけないのでしょうか。 これがどういう意味を現しているのか。 謎が謎を呼んで、推理しているような気分ですけど、真面目に考えています。 どなたかこのソースコードの意味が分かる方がいましたら、アドバイスをどうぞ宜しくお願い致します。  

  • WEB制作に関する質問です。コンテンツをスライドに

    ボタンをクリックするとtableの部分を垂直方向にスライドさせて切り替えたいのですが なかなか、うまくいきません。 こんな感じかなと思って、つくったのですが、まったく作動しません。 何をどうすればいいか分かりません。 どなたか、教えて下さい。 javascriptは少し分かるぐらいです。 よろしくお願いします。 コードは↓ 下のクリック画像だけ指定してあります。 html <div id="main_left">  <h2>見出し</h2>  <img src="image/cicletop.jpg" width="33" height="33" /><!-- 上のクリックボタン -->  <div id="shuraider">   <table name="shuraid1" id="shuraid1">    <tr><td colspan="2">aaaaaa</td></tr>    <tr><td><img src="image/buttons_06.gif" width="56" height="57" /></td><td>aaaaaaaaaaaaaaaaa</td></tr>    <tr><td><img src="image/menu.gif" width="114" height="30" id="menu10" name="menu10" onmouseover="document.menu10.src='image/amenu.gif'" onmouseout="document.menu10.src='image/menu.gif'" onclick="document.menu10.src='image/amenu.gif'" /></td><td>aaaaaaaaaaaaaa</td></tr> </table> <table name="shuraid2" id="shuraid2"> <tr><td colspan="2">aaaaaa</td></tr> <tr><td><img src="image/buttons_06.gif" width="56" height="57" /></td><td>aaaaaaaaaaaaaaaaa</td></tr> <tr><td><img src="image/menu.gif" width="114" height="30" id="menu10" name="menu10" onmouseover="document.menu10.src='image/amenu.gif'" onmouseout="document.menu10.src='image/menu.gif'" onclick="document.menu10.src='image/amenu.gif'" /></td><td>aaaaaaaaaaaaaa</td></tr> </table> <table name="shuraid3" id="shuraid3"> <tr><td colspan="3">aaaaaa</td></tr> <tr><td><img src="image/buttons_06.gif" width="56" height="57" /></td><td>aaaaaaaaaaaaaaaaa</td></tr> <tr><td><img src="image/menu.gif" width="114" height="30" id="menu10" name="menu10" onmouseover="document.menu10.src='image/amenu.gif'" onmouseout="document.menu10.src='image/menu.gif'" onclick="document.menu10.src='image/amenu.gif'" /></td> <td>aaaaaaaaaaaaaa</td></tr> </table> <table name="shuraid4" id="shuraid4"> <tr><td colspan="2">aaaaaa</td></tr> <tr><td><img src="image/buttons_06.gif" width="56" height="57" /></td><td>aaaaaaaaaaaaaaaaa</tr> <tr><td><img src="image/menu.gif" width="114" height="30" id="menu10" name="menu10" onmouseover="document.menu10.src='image/amenu.gif'" onmouseout="document.menu10.src='image/menu.gif'" onclick="document.menu10.src='image/amenu.gif'" /></td> <td>aaaaaaaaaaaaaa</td></tr> </table> </div><!-- end shuraider --> <img src="image/ciclebottom.jpg" width="33" height="33" name="shuraid_botton" id="shuraid_botton" onclick="shuraido ()" /><!-- 下のクッリックボタンでここをクリックするとtableを切り替えたい --> </div><!-- end main_left --> ここからcss #main_left{ width: 339px; } #main_left h2{ font-size: 18px; font-weight: bold; color: #ffffff; width: 339px; line-height: 2em; letter-spacing: 1em; background-image: url(../image/h2.jpg); background-color: #0F9; margin: 0; } #shuraider{ width: 337px; height: 120px; overflow: hidden; } ここからjavascript var i=1; function shuraido(){ if(i==1){ document.src="shuraid2"; i=2; } else if(i==2){ document.src="shuraid3"; i=3; } else if(i==3){ document.src="shuraid4"; i=4; } else{ document.src="shuraid1"; i=1; } } </script>

  • スワップイメージのフェード方法を教えてください

    はじめまして。 スワップイメージを、あるサイトを参考に作ってみました。 それにフェードイン/フェードアウトを追加したいのですが、いろいろと試してみましたができません。 JavaScriptは全く分からず、困っています。 お助けください。お願いします。 ちなみに以下がスワップイメージのソースです。 image画面に表示する際、フェードイン/アウトを追加してもらえると助かります。 <HEAD>  <script language="JavaScript">  <!--  Img = new Array()  Img[0]="img/image1.jpg"  Img[1]="img/image2.jpg"  Img[2]="img/image3.jpg"  AImgs = new Array()  for (i=0 ; i<Img.length ; i++){    AImgs[i] = new Image()   AImgs[i].src = Img[i]  }  function Swap(a,b){   a=a.name   document.images[a].src = Img[b]  }  //-->  </script> </HEAD> <BODY>  <TABLE>   <TR>    <TD><IMG src="img/image1.jpg" name="image"></TD>   </TR>   <TR>     <TD><A href="#" onmouseover="Swap(image,1)" onmouseout="Swap(image,0)"><img src="img/image2.jpg"></A></TD>    <TD><A href="#" onmouseover="Swap(image,2)" onmouseout="Swap(image,0)"><img src="img/image3.jpg" ></A></TD>   </TR>  </TABLE> </BODY>

  • マウスオーバーで画像の切替でタイマーをつけるには?

    <html> <head> <script type="text/JavaScript"> <!-- imglist = ["img1.gif", "img2.gif"]; preImage = new Array(); for (i=0; i<imglist.length; i++) { preImage[i] = new Image(); preImage[i].src = imglist[i]; } //--> </script> </head> <body> <img src="img1.gif" onmouseover="this.src='img2.gif'" onmouseout="this.src='img1.gif'"> </body> </html> 例えば上記のようなソースでimg1の画像にマウスオーバーでimg2に画像が入れ替わるのですが、 マウスアウトした時に、すぐimg1の画像に戻るのではなく、img2の画像を1分くらい出して その後img1に入れ替わるようにしたいのですが、どうしたらよいでしょうか? 教えてください。よろしくお願いいたします。

  • マウスオーバー・アウトの制御のソース

    複数のボタンでマウスオーバー・アウトの制御のソースを教えてもらったのですが、質問いたします。 この場合、このボタンはオーバーとアウト、それぞれ同じ画像を使用しているのですが、その場合でも全部違ったファイル名をつけなければいけないのでしょうか? 現在はそあしているのですが、何か無駄な気がして・・・。 よしくお願いします。 <SCRIPT LANGUAGE = "JavaScript"> <!-- if (document.images) { //if image object is available img1on = new Image(); // MouseOver Images img1on.src = "images/c1b.gif"; img2on = new Image(); img2on.src = "images/c2b.gif"; img3on = new Image(); img3on.src = "images/c3b.gif"; img1off = new Image(); // MouseOut Images img1off.src = "images/c1a.gif"; img2off = new Image(); img2off.src = "images/c2a.gif"; img3off = new Image(); img3off.src = "images/c3a.gif"; img4off = new Image(); } function imgOn(imgName) { if (document.images) { document[imgName].src = eval(imgName + "on.src"); }}   function imgOff(imgName) { if (document.images) { document[imgName].src = eval(imgName + "off.src"); }} //--> </SCRIPT>

  • 外部 .js で動かないものが出てきてしまいました

    外部 .js への移行に伴い、動かないものがあります。エラは「未定義の変数です: rollover」、および「スクリプトで呼び出しているソースが見つかりません。」。 test.html、test.js、および画像はすべて同じディレクトリに置いています。 (test.js) window.onload = function loadImage() { var rollover = new Array(3); for (var i = 0; i < 3 ; i++) { rollover[i] = new Image(); } rollover[0].src = "image-1-x.gif"; rollover[1].src = "image-2-x.gif"; rollover[2].src = "image-3-x.gif"; } または function loadImage() { var rollover = new Array(3); for (var i = 0; i < 3 ; i++) { rollover[i] = new Image(); } rollover[0].src = "image-1-x.gif"; rollover[1].src = "image-2-x.gif"; rollover[2].src = "image-3-x.gif"; } window.onload = loadImage; (test.html) <html> <head> <script type="text/javascript" src="test.js"></script> </head> <body> <a onmouseover="image-1.src=rollover[0].src; return true;" onmouseout="image-1.src='image-1-y.gif'; return true;" href="page-1.htm"><img name="image-1" src="image-1-y.gif" alt="Page 1"></img></a> <a onmouseover="image-2.src=rollover[1].src; return true;" onmouseout="image-2.src='image-2-y.gif'; return true;" href="page-2.htm"><img name="image-2" src="image-2-y.gif" alt="Page 2"></img></a> <a onmouseover="image-3.src=rollover[2].src; return true;" onmouseout="image-3.src='image-3-y.gif'; return true;" href="page-3.htm"><img name="image-3" src="image-3-y.gif" alt="Page 3"></img></a> </body> </html>

  • 画像切り替える&画像何千枚でもコード増やさない方法

    html上に表示させた画像をクリックすると、画像を切り替えるプログラムを作りたいのですが、 うまく動作しません。 1つ目の質問は、 document.images[]の方法もありますが、正しくなく互換がないそうなので使いたくありません。 document.getElementById()で画像を切り替えるにはどうしたらいいのでしょうか? 2つ目の質問ですが、 このプログラムは6枚の画像が切換えの対象になっていますが、 これが300枚とかになるとプログラムが増えて大変です。 GAZO[0] = new Image(50,50); GAZO[0].src = "0.jpg"; という風にしているところを var GAZO = new Array(); for(n=0; n<6; n++){ GAZO[n] = new Image(50,50); GAZO[n].src = "n.jpg"; } という風にすればできると思ったのですが、できませんでした。 n.jpgが""で囲まれて変数のnがただの文字列と見られているのかもと思い、 'GAZO[n] = new Image(50,50); GAZO[n].src = '+'"'+n+'.jpg'+'"'; このようにしてみましたがダメでした。 画像の枚数が何千枚になってもプログラムが増えない方法はありますか? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title></title> <script type="text/javascript"> <!-- var Bifor = new Array(); Bifor[0] = new Image(50,50); Bifor[0].src = "befor0.jpg"; Bifor[1] = new Image(50,50); Bifor[1].src = "befor1.jpg"; Bifor[2] = new Image(50,50); Bifor[2].src = "befor2.jpg"; Bifor[3] = new Image(50,50); Bifor[3].src = "befor3.jpg"; Bifor[4] = new Image(50,50); Bifor[4].src = "befor4.jpg"; Bifor[5] = new Image(50,50); Bifor[5].src = "befor5.jpg"; function first(){ for(i=0; i<6; i++){ 'document.getElementById("after' + i + '").src' = Bifor[i].src; } } var GAZO = new Array(); GAZO[0] = new Image(50,50); GAZO[0].src = "0.jpg"; GAZO[1] = new Image(50,50); GAZO[1].src = "1.jpg"; GAZO[2] = new Image(50,50); GAZO[2].src = "2.jpg"; GAZO[3] = new Image(50,50); GAZO[3].src = "3.jpg"; GAZO[4] = new Image(50,50); GAZO[4].src = "4.jpg"; GAZO[5] = new Image(50,50); GAZO[5].src = "5.jpg"; function change(m){ 'document.getElementById("after' + m + '").src' = GAZO[m].src; } //--> </script> </head> <body onload="first()"> <form name="jirei" action="#"> //actionは必須。しかしに他に入れるものがないので便利な#を入れる <GAZO src="title.jpg"> <table> <tr> <td><img src="befor0.jpg" width="50" height="50" id="after0" onclick="change(0)"></td> <td><img src="befor1.jpg" width="50" height="50" id="after1" onclick="change(1)"></td> <td><img src="befor2.jpg" width="50" height="50" id="after2" onclick="change(2)"></td> </tr> <tr> <td><img src="befor3.jpg" width="50" height="50" id="after3" onclick="change(3)"></td> <td><img src="befor4.jpg" width="50" height="50" id="after4" onclick="change(4)"></td> <td><img src="befor5.jpg" width="50" height="50" id="after5" onclick="change(5)"></td> </tr> </table> <input type="button" value="元に戻す" onclick="first()"> </form> </body> </html>

  • なぜ「ページでエラーが発生しました。」?

    字数が限られているので、「なぜエラーなのですか?」 -----ここからhead区間 <!--JavaScript Function window.onerror = null; var ver4 = (navigator.appVersion.charAt(0) >= "4"); var NN4 = ver4 && (navigator.appName.charAt(0) == "N"); var IE4 = ver4 && (navigator.appName.charAt(0) == "M"); var NN3 = ((navigator.appVersion.charAt(0) == "3") && (navigator.appName.charAt(0) == "N")); if(NN3 || NN4 || IE4){ var img_b = new Array(); img_b[0] = new Image(); img_b[0].src = "kbw.jpg" img_b[1] = new Image(); img_b[1].src = "ao.jpg" img_b[2] = new Image(); img_b[2].src = "bcw.jpg" img_b[3] = new Image(); img_b[3].src = "sm.gif" } function B_in(nam,num){ if(NN3 || NN4 || IE4) document.images[nam].src = img_b[num].src; } function B_out(nam,num){ if(NN3 || NN4 || IE4) document.images[nam].src = img_b[num].src; return false; } // END ---> </SCRIPT> </head> -----ここからbody <BODY onLoad="time(0)"> <SCRIPT LANGUAGE="JavaScript"> <!--- ここから表示 document.write(TodayIMG(0)); //end ---> </SCRIPT>

  • NTML-Javascriptでのデータ受け渡し

    HTMLのプログラムでJavaScriptを外部処理にして以下のようにグラフィックデータを配列に入れ、一括で登録しHTML内でデータテーブルのオフセット値からデータを得ようとしましたがうまくいきません。 ページがロードされた時にデータを一括で読もうとしているのですが、デバッグのためにDocument.writeで処理の入り口と出口で文字を表示させましたが、入り口の方しか表示されず、処理が正しく行われていないようです。 どのようにすればうまくデータを得ることができますでしょうか? ----JavaScript---- var imgData = [ "img/01.gif", "img/02.gif", "img/03.gif", "img/04.gif", "img/05.gif", "img/06.gif", "img/07.gif", "img/08.gif", : : ] imgTbl = new Array(); for(var i=0; i<imgData.length-1; i++){ imgTbl[i] = new Image(); imgTbl[i].src = imgData[i]; } window.onload=function(){ ImageInit(imgData.length); } function ImageInit(no){ for(var i=0; i<no; i++){ document.write("IN..."+i+"<br>"); <--コチラは表示されます。 imageSetSrc(i); document.write("OUT..."+i+"<br>"); <--コチラは表示されません。 } } function imageSetSrc(i){ document.getElementById(i).setAttribute("src", imgData[i]); } ----------------------------------------------------- ----HTML---- : : <table border="0" cellspacing="0" cellpadding="0"> <tr> <td id=0 src="ImageSetSrc(0)" width="758" "80"></td> <--仮にデータのオフセットを0としています。 </tr> : : </table>

  • javascriptでの画像の先読みについて(その2)

    その1からの続きです。。 以下が私の作ったソースです。 <script language="JavaScript"> <!-- var flag=new Array(); var image=new Array(); var img=new Array(); // gif画像の先読み img[0]=new Image();img[0].src="透明gif"; img[1]=new Image();img[1].src="上向き矢印.gif"; img[2]=new Image();img[2].src="矢印の線.gif"; img[3]=new Image();img[3].src="下向き矢印.gif"; var on_mouse=144; for (i=0;i<144;i++) {flag[i] = 0;} function on_image(num){ on_image_no = num; //マウスの位置(0~143) } function off_image(num){ on_image_no = 144; //範囲外 } function mouse_click(){ flag[on_image_no]=(flag[on_image_no]==0); var image_no=0; for(i=0;i<144;i++){ if(flag[i]){ //フラグが立っていたら矢印の始点or終点を表示 if(image_no==0){ document.image[i].src=img[1].src; //上向き矢印 image_no=2; //次から矢印の線を表示 }else{ document.image[i].src=img[3].src; //下向き矢印 image_no=0; //次から透明なgifを表示 } }else{document.image[i].src=img[image_no].src;} } } //--> </script> #関係ないですけど、off_image()はいらないかも…。 以上、質問が長くなってしまって大変恐縮ですが、どなたか私をお助けください。 よろしくお願いいたします。 関連URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=319633