• 締切済み

HTMLで誕生石と星座をアラート表示するスクリプト

HTMLで誕生石と星座をアラート表示するスクリプトを作っています。 プロンプトで入力された数字(19900425)から誕生石と星座をアラート表示するスクリプトを作っています。 この場合、switchで行う場合、それぞれどのようにコードを組めばいいのでしょうか? できれば解説のコメント付きでお願いします。 どうぞよろしくお願いします。

みんなの回答

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

回答がないみたいなので… >誕生石と星座をアラート表示するスクリプトを作っています どのような処理にしているのか、どこまでできているのかまったくわからないので、できているところまでを提示した方が回答が付きやすいはずです。 >switchで行う場合、それぞれどのようにコードを組めばいいのでしょうか? switchで行なう方法は思いつきませんが、以下のような考え方でもできると思いますのでご参考までに。 入力の方法や、表示メッセージの内容などをどうしたいのかも不明なので、そのあたりは空白にしてあります。 コメントの内容に応じた処理を入れてください。(変数名や関数名は適当です) * 誕生石は複数あるし違う月だったりもするので仮に適当に設定。 * 星座の区切り日の正確なのも不明なのでこれも仮に設定。(いろいろあるみたい) * (↑)どれが正かわからないため、計算で求めずに配列に入れて比較する方式にしています。 (全角空白は半角に) // ***** 誕生日から誕生石・星座を表示するメイン処理 function BirthstoneAndZodiac(){  var day;        // プロンプトで値を入力、または              // テキストボックスの値を取得する等              // (入力値を変数dayに)  if(dateCheck(day)){   // 入力値をチェック    var bz = dayToBZ(day);//正しければ日付から誕生石と星座を得る              // 誕生石・星座名から表示する文章を              // 作成して表示する  } else {              // 入力値が正しくない場合の処理              // (エラー表示など)  } } // *** "yyyymmdd"形式の誕生日から誕生石・星座を返す関数 function dayToBZ(day){  // 変数及びデータの定義   var birthday, i, index_b, index_z,     bzData = {  // 星座の区切り日(一律の規則ではないので配列化)  date:["0121","0221","0321","0421","0522","0622",      "0724","0824","0924","1023","1123","1223"],  // 誕生石の配列(12月がindex=0)  birthstone:["turquoise","garnet","amethyst","aquamarine","diamond",         "emerald","pearl","ruby","peridot","sapphire","opal","topaz"],  // 星座の名前(12/23~1/20のindexが0:dateの日付順に対応)  zodiac:["Capricornus","Aquarius","Pices","Aries","Taurus","Gemini",       "Cancer","Leo","Virgo","Libra","Scorpius","Sagittarius"]  };  // yyyymmddの後ろの4文字(=mmdd)  var birthday = day.slice(-4);  // 該当する星座を探すためのループ  // 該当する日付(月)の時にループを抜ける  for(i=0; i<12; i++)   if(bzData.date[i]>birthday) break;     //(mmddの文字列の値で比較)     //(数値化しても同じ結果なので文字のまま比較)  // 該当しなかった場合も含め適正化(0~11の値にする)  index_z = i%12;  // mmの文字を数値化して、0~11の値に  //(誕生石は月と合致しているので、月を求めるだけでよい)  index_b = +birthday.substring(0,2)%12;  // 該当する誕生石・星座を返す  //(値が2種類あるのでオブジェクトで)  return { birthstone:bzData.birthstone[index_b],       zodiac:bzData.zodiac[index_z] }; } // *** 入力値をチェックする関数(正しければtrueを返す) function dateCheck(d){  // とりあえず一番簡単なチェックのみ(8文字の数字をチェック)  return d?/^\d{8}$/.test(d):d;   // きちんとやるなら、入力値を一旦Dateオブジェクトに変換して   // 再度yyyymmdd形式に変換し、最初の文字列と比較するとか。   // (同じなら正)   //(意味は00日や35日、13月のような存在しない日の入力チェック) }

回答No.1

かいとうがつきませんね。 ところで、ほんとうに switch ぶんをつかわないとだめですか? むだにながくなるようにおもいます。 alert (['yes', 'no'][1]); //はいれつの n ばんめをとりだす。を、きほんとして、いか。 var A = ['やぎ', 'みずがめ', 'うお', 'おひつじ', 'おうし', 'ふたご', 'かに',      'しし', 'おとめ', 'てんびん', 'さそり', 'いて'];      var B = ['ガーネット', 'アメシスト', 'アクアマリン', 'ダイヤモンド', 'エメラルド', 'パール',      'ルビー', 'ペリドット', 'ブルーサファイア', 'オパール', 'トパーズ', 'トルコ']; function constellation (yyyymmdd) {  var ymd = parseInt (yyyymmdd, 10); //文字列だと思うので十進数の数値に変換  var md = ymd % 10000;  var m = Math.floor (md / 100);  var x = m * 100 + 21 + (4 < m) + (6 < m) * 2 - ( 9 < m);//省略しすぎ?  return md < x ? m - 1: m == 12 ? 0: m; } function birthstone (yyyymmdd) {  var ymd = parseInt (yyyymmdd, 10); //文字列だと思うので十進数の数値に変換  var m = Math.floor (ymd % 10000 / 100) - 1; // 月の部分だけを計算する  return m; } alert (A[constellation ('20000101')]); alert (B[birthstone ('20001231')]);

関連するQ&A

  • alertでHTMLのコードが出てしまう。

    今、自分で作ってるプログラムの話です。。 alert に、HTMLのコードが入ったもの<BR>とか、を入れた場合、どうもそのまま<BR> と表示されてしまいます。 改行は、してもしなくてもいいんですが、巧い方法って有りますでしょうか? やや困りです。 宜しくお願いします。 ちょっと具体的に書きますと。。 まず、画面Aで 画面Bのタイトルを入力してもらいます。 その時、場合によっては<BR>を入れてもらい、改行、もしくは<FONT>等で色の指定等してもらいます。 画面Bには選択欄が有り、そこの選択欄が正しく選択されてない場合、 (画面Bのタイトル)が、選択されてません というalertを出す仕組みです。 つまり画面Aにて、「画面B<BR>のタイトル」と入力した場合、 alert でも、 画面B<BR>のタイトルが、選択されてません と表示されてしまいます。 という感じですが、HTMLタグがalertで出ない方法です。 こうしたらいいんじゃない?っていうアイディアでも構いません。 宜しくお願いします。

  • 入力した文字をalertで表示するスクリプトを作っています。

    入力した文字をalertで表示するスクリプトを作っています。 以下、IEとOperaでは動作しますが、FirefoxとGoogle Chromeでは動作しません。 書き方が悪いのでしょうか? <html> <head> <script language=JavaScript> <!-- function test(){ alert(input1.value); } // --> </SCRIPT> </HEAD> <BODY> <input type="text" name="input1"> <input type="button" value="テスト" onClick="test()"> </html>

  • .  <HTMLについて>  よろしくお願いします  

    ページに入ったときと出て行くときにアラート表示させるHTMLソースです。これをhead区間内に貼り付けてもうまく表示されません。何故でしょうか・・・ <SCRIPT LANGUAGE="JavaScript"> <!-- function Pagein(){ alert("いらっしゃいませ"); } //--> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!-- function Pageout(){ alert("ありがとうございました"); } //--> </SCRIPT> よろしくお願いいたします。

  • JAVAスクリプトで商品コードから商品名表示

    ホームページに商品コードを入力すると商品名を表示する 簡単なデータベースを設置したいのですが、 JAVAスクリプトを使いHTMLファイル内で可能でしょうか? 商品コードは半角でアルファベットと数字の組み合わせで5・6桁です。 よろしくお願いします。

  • JavaScriptのアラートのソース

    1と2の数字入力窓があり、1よりも2の数字が大きくなるときに、Java Scriptでアラートを出したいのですが、JavaScriptのソースがまったくわかりません。どなたかご存知のかた、教えてください!

  • HTMLのIFRAMEについて教えて

    HTMLのIFRAMEについて教えて欲しいのですが、 例えば、cgiの入力項目で、数字の1を入力した場合、aaa.htmlというページ内にあるIFRAMEで囲まれた エリア内に、1の写真が表示できるようにしたいのです。 現在、以下のような記述をしているのですが、IFRAMEの部分がエラーになってしまうのです。(>_<) noには、数字の変数が入っています。 他の方法でも結構なのですが、数字によってIFRAME内に表示される写真を変えたいのです。 どなたか、宜しくおねがいします。 <script type="text/javascript"> <!-- switch(no){ case 0: id = "01.jpg"; break; case 1: id = "02.jpg"; break; case 2: id = "03.jpg"; break; default : id = "00.jpg"; break; } // --> </script> <iframe src="id" name="picture" width="300" height="300"></iframe>

    • ベストアンサー
    • HTML
  • formとalert

    javascript初心者です。 formを使ってテキストボックスに入力された文字をalertを使って表示させたいのですが、functionの中の記述がよくわかりません。 formを使った参考資料も見つからず質問するに至りました。 教えていただければと思います。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>練習</title> <script type="text/javascript"> </script> </head> <body> <form name="a">文字を入力: <input type="text"size="20" name="name1" ><br> <input type="button" name="name2" value="確認" onclick="alert(chk)"> </form> <script type="text/javascript"> function chk(){ var n=document.a.name1.value; alert(n); } </script> </body> </html>

  • 複数個所のアラートを一括表示させるには?

    フォーム入力の際に、必須入力項目を設け、未入力箇所のインデックスナンバーと警告文を表示させる際に、複数個所に未入力箇所がある場合、インデックスナンバーも複数表示させるものを作りたいと考えています。 例)フォーム入力時 index NO./title(必須入力)/price 1 /ABCD /1500 2 /QQQ / 3 /SSS /800 4 / XXX / " 20 /AAA / この場合、必須入力に入力されているインデックスNo2、4、20のpriceが未入力となっていると考え、アラートを出したいのですが、 alert文で"「インデックスNO2、3、20のpriceが未入力です。」(「、」でNOを区切る)、と表示させたいのですがどうしたらよいのでしょうか?初心者なので、解説も加えていただけると、大変参考になります。よろしくお願いいたします。

  • アラートについて

    PHPでフォームを作っており送信または登録が完了したらアラートで メッセージを出力するいうものをつくりました。 例としてmysqlに登録完了したらアラートを出すという抜粋です。 if (PEAR:: isError($res)) { die($res->getMessage()); } else { echo "<script type='text/javascript'>"; echo "alert('登録完了');"; echo "</script>"; } これで動作は問題ないのですがアラートが表示されOKボタンを クリックしたらheaderlocationで指定のURLに飛ばすということは js側で制御できないものでしょうか? 使用目的としては、データの更新など同一ページで行った場合 アラートが表示されOKボタンをクリックしてもブラウザを更新 しなければデータが反映表示されないためです。 phpでアラートの後にheaderlocationをやるとページ移管は するもののアラートが表示されず困っております。 jsについてはほぼ無知なもので簡単なことなのかもしれないの ですが方法がわかりません。 フォームは複数ありアラートを表示させたい全ての箇所にechoで 出力しているのですが他にもいい方法などアドバイスなどが ありましたら教えて頂けますと非常に幸いです。

  • PHPの文字列変数をJavaScriptのalertで表示させたい

    <?php  $mes = 123; print<<<EOF  <script Language="JavaScript">  <!--   JavaScript:alert( $mes );  //-->  </script> EOF; ?> ↑のコードを実行すると123というメッセージボックスが表示されます。 <?php  $mes = "aaa"; print<<<EOF  <script Language="JavaScript">  <!--   JavaScript:alert( $mes );  //-->  </script> EOF; ?> しかしこのように数値変数でははく文字列変数を渡すと表示できません。 JavaScriptにPHPの文字列変数を受け渡すことはできるのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう