• ベストアンサー

promptを使用した年齢認証

javascriptを勉強し始めたばかりで参考書のとおりに打っているのですが、疑問が解決しなくて困っています。 以下のようなif else文があったとすると、コマンドにちゃんと数字を入力してくれたらそれで判定ができるんですが、数字ではなくて文字を入力されてしまっても通ることがわかり、何とか解決できないかと悪戦苦闘しています。 javaのことがよくわからなくて、本当にすみませんが、よろしくお願いします。 <script type="text/javascript"> var nenrei; nenrei=parseInt(prompt("年齢を入力してください。")); if(nenrei<18){ document.write("18禁です。"); } else{ document.write("入場できます。"); } </script>

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

  • ベストアンサー
  • makoto_u
  • ベストアンサー率75% (3/4)
回答No.1

<script type="text/javascript"> <!-- var nenrei; nenrei=prompt("年齢を入力してください。"); if(nenrei.length > 0 && nenrei.match(/^[0-9]*$/) && nenrei>18){ document.write("入場できます。"); } else{ document.write("18禁です。"); } //--> </script> こんな感じでどうでしょうか。 if文の中では 1.1文字以上の文字が入っているか 2.入力した文字が数字だけか 3.18より大きいか を見ています。 googleで「javascript 数値かどうか」とか検索すればいろいろ出てくるので参考にしてみてください。

dead-eye
質問者

お礼

回答ありがとうございました。 とてもわかりやすい説明までつけていただき、助かりました。 論理演算子とmatchで数字か数字かどうかを見ているのを組み合わせることで解決するんですね。 すごいためになりました。

その他の回答 (1)

回答No.2

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Q3670040 TestCase 1</title> <script type="text/javascript"> //<![CDATA[ function init(){ var nenrei; nenrei=parseInt(prompt("年齢を入力してください。")); //文字が入力された時どんな値が入っているか確認してみよう //alert(nenrei); //入っていた値 NaNはそのまま比較できないようだ。 // http://htmlajax.org/index.php?area=Main&page=Number%20type%20of%20ECMAScript if(!isNaN(nenrei) ){ if(nenrei<18){ document.getElementById("hoge").appendChild(document.createTextNode("18禁です。")); }else{ document.getElementById("hoge").appendChild(document.createTextNode("入場できます。")); } }else{ document.getElementById("hoge").appendChild(document.createTextNode("整数でないものが入力されました。")); } } //ECMAscript無効にしている人のことも考えてあげてください //ECMAscript読める人には簡単に突破されるので //この手の判別は殆ど意味をなさない。 //本格的にやるなら //身分証明書のコピーでも郵送してもらって //ユーザー名とパスワード交付して //サーバ側でチェックとか。 //]]> </script> </head> <body onload="init();"> <p id="hoge"></p> </body> </html>

dead-eye
質問者

お礼

まだ勉強不足でこのプログラムが何を意味しているのか完全に把握できませんが、こうした解決の方法もあるということがわかりました。 さらに、この年齢認証のアルゴリズムでは現実的に意味を成さないことも教えてくださりありがとうございました。 実際に実用段階になったときに、ほかの方法で処理したいと思います。

関連するQ&A

  • JavaScriptについて

    以下のコードなのですが document.getElementById('input').syoriEventListener の部分にエラーが出ます なぜでしょうか?? inputEventListener <body> <button id = "input">Click</button> <script> document.getElementById('input').inputEventListener('click', function(){ var txt = prompt("数字を入力"); if(txt == 0){ document.write("0以外でお願いします") }else if(txt % 2 == 0){ document.write("偶数です"); }else{ document.write("奇数です"); } }) </script>

  • promptメソッドがIE7では正しく動かない

    javascriptの初心者です、宜しくお願いします。 promptメソッドを利用してインプットされたパスワードのページへリンクしようとしています。マイドキュメント内では問題なく動いているのですが、サーバーへアップロードしてIE7で確認の段階になると正しく動いてくれません。どこが悪いのか全く解りません、どなたかお教え頂けませんでしょうか。 次の様なソースで実行しています。 <script type="text/javascript"> <!-- function passWordCheck(){ pass=prompt("パスワードを入力してください。",""); if (pass != "") {location.href = pass + ".html";} else if(pass == null){passWordCheck();} } //--> </script> </head> <body> <input type="button" value="閲覧する" onClick="passWordCheck()"> </body> </html>

  • JavaScriptのコードの間違いを教えて

    いつもお世話になっております。 現在、JavaScriptの勉強をしているのですが、if構文のところでつまずいてしまいした。 下のコードがうまく実行できません。 間違いを指摘して頂ければと思います。 <doctype! html> <html lang="ja"> <head>    <meta charset="UTF-8">    <title>Javascript</title> </head> <body> <script type="text/javascript">    var x = window.prompt("好きな値を入力してください","100");    if (x>100)       {window.document.write("100より大きいです");}    else {if(x<100))       {window.document.write("100より小さいです");}       else {if(x=100))          {window.document.write("100です");}       }    } </script> </body> </html> なお、テキストエディタで記述し、実行はGoogleChromeで行いました。 よろしくお願いします。

  • パスワード認証付きのページ

    簡単なパスワード認証付きのページを作成しています。 入力したパスワードが隠し文字の「*」で表示されず、普通に表示されてしまいます。 どのようにしたらよいでしょうか? 教えてください。 ======================================== <script language="JavaScript"> <!--// function Password() { pw = prompt("パスワードを入力してください:","") if(pw) { location = pw + ".html" } else { alert("パスワードが間違っています") } } //--> </script>

  • 二分探索のプログラム

    以下のプログラムを教科書通り入力したのですが、何の反応もありません。何度も見直しました。 あらかじめ整列された誕生日のリストがあり、あとから入力された誕生日をあらわす数と同じ数がリストにあるかどうかを、調べるというものです。 どこが違っているのか教えていただけますでしょうか。 <HTML> <BODY> <SCRIPT> bd=new Array(103,110,128,210,211,228,306,320,401,430,512,520,530,601, 622,712,821,915,1009,1010,1101,1130,1202,1212,1217,1222); k=parseInt(prompt("調べたい日を3~4桁で入力してください")); s=0; e=25; while(s<e){ c=Math.floor((s+e)/2); if=(bd[c]<k){ s=c+1; }else{ e=c; } } if(k==bd[s]){ document.write("発見しました。"); }else{ document.write("発見できませんでした。"); } </SCRIPT> </BODY> </HTML>

  • promptからのdocument.write

    javascriptのdovument.writeについての質問です。 まず以下のプログラムを見て頂きたいのですが・・・ window.onload=function moji(){   YorN=window.prompt('文字を表示しますか?','');   if(YorN=='y'){    document.write('サンプル');   } } 上記のプログラムのように、ページを読み込んだらプロンプトを表示し、『y』と入力したらdocument.writeで文字列を表示させるというようなことを考えているんですが、 上記のプログラムですと、プロンプトが表示されて『y』と入力すると、サンプルという文字しか表示されず、最初に見えていたページの内容が消えてしまいます。 最初に見えていたページに文字を付加するという形にしたいのですが、方法を思いつきません。 どなたかご存知の方よろしくお願いいたします。 ブラウザはIE8です。 ちなみにjavascriptは外部ファイルとして<head>内で読み込ませています。

  • JavascriptからJavaへの変え方

    Javascriptで作ったものをJavaにしないといけなくなったのですが 私はJava初心者でまったくわかりません。 色々ネットで調べてみたのですが、どうも難しくて理解することができませんでした。 下にJavascriptで作ったものを載せてるのですがどなたかやり方を教えてもらえないでしょうか? <html> <head> <title>サンプル</title> <script type="text/javascript"> function jikoku() { dd = new Date(); document.F1.T1.value = dd.toLocaleString(); window.setTimeout("jikoku()", 1000); } </script> <script type="text/javascript"> mes = new Array(5); mes[0]="0"; mes[1]="1"; mes[2]="2"; mes[3]="3"; mes[4]="4"; date=(new Date()).getHours(); if( 0 <= date && date <= 5 ){ document.write(mes[0]); } else if( 6 <= date && date <= 10 ){ document.write(mes[1]); } else if( 11 <= date && date <= 16 ){ document.write(mes[2]); } else if( 17 <= date && date <= 19 ){ document.write(mes[3]); } else{ document.write(mes[4]); } </script> <script type="text/javascript"> function Random() { var kazu = Math.random(); kazu = kazu*100; kazu = Math.ceil(kazu); if( kazu<=9 ) document.write('<br/>○1<br/>'); else if( kazu<=19 ) document.write('<br/>○2<br/>'); else if( kazu<=29 ) document.write('<br/>○3<br/>'); else if( kazu<=39 ) document.write('<br/>○4<br/>'); else if( kazu<=49 ) document.write('<br/>○5<br/>'); else if( kazu<=59 ) document.write('<br/>○6<br/>'); else if( kazu<=69 ) document.write('<br/>○7<br/>'); else if( kazu<=79 ) document.write('<br/>○8<br/>'); else if( kazu<=89 ) document.write('<br/>○9<br/>'); else document.write('<br/>○10<br/>'); } Random() </script> <script language="JavaScript"> var imglist = new Array( "sample1.jpg", "sample2.jpg", "sample3.jpg", "sample4.jpg" ); var selectnum = Math.floor((Math.random() * 100)) % imglist.length; var output = "<img src=" + imglist[selectnum] + ">"; document.write(output); </script> </head> </html>

  • javascript 初心者です。

    下記のソースのどこが間違っているのでしょうか。 <body> <script type="text/javascript" language="javascript"> <!-- var us; us = document.getElementById("uuss"); if ( us == 0 ){ document.write("オッケーです。"); }else if ( us == 1 ){ document.write("エヌジーです"); }else if ( us == 2 ){ document.write("未定です"); }else if ( us == 3 ){ document.write("空欄です"); } // --> </script> <div id="uuss">1</div> </body> 例えば<div id="uuss"> </div>の部分に1と入力すると、 「エヌジーです」という文字列を表示させたいのですが ブラウザで見ると「1」と出てしまいます。 よろしくお願いします。

  • promptで入力されたデータをテーブルに表示する方法。

    Promptで入力した情報(生徒名とテストの点数)をテーブルに表示したいのですが、どうやるのかわかりません。 Promptはページを開いたときに自動的にでてきて、 空白入力があるまで何度でもポップアップするというふうになっています。 Style Sheetを使ってやろうとしているのですが、今一やり方がわかりません。 ぜひぜひ、おしえてください!!! <HTML> <head> <SCRIPT LANGUAGE=JavaScript> //Question 1 function oldDisplay() { var name = new Array(); var grade = new Array(); var entry = "new"; var Test = new Array(); var index = 0; var total = 0; while(true) { name[index]=prompt("Enter student name", ""); if (name[index]=="") {break} grade[index++] = parseInt(prompt("Enter grade for that student",0)); } document.write ("<PRE>"); for(index=0; index < name.length -1; index++) { document.write("Name: "+name[index]+ "\t\t\t Score: "+grade[index]+ "\n") } total = name.length - 1 document.write("This report lists "+ total + " records.") //Question 2 var ave = 0; for (index=0;index<grade.length;index++) { ave = ave+grade[index]; } ave=ave/(index); document.write("\n\n\nThe average score is "+ave); document.write ("</PRE>"); </SCRIPT> </head> <BODY onload="oldDisplay()"> <DIV ID="myDIV"> <P ID="myPARA"><H1>The results of the entry and computation are shown below.</H1></P> </DIV> </BODY> </HTML>

  • JavaScriptの間違いがどこか教えてください。

    JavaScriptを勉強しはじめたばかりで、つまずいております。 時間ごとに違った言葉を表示するというJavaScriptです。 どこが間違えているのかわからないので、教えてください。 間違いはこの中にあるはずなのですが…。 <script type="text/javascript"> <!-- now = new Date(); nowhours = now.getHours(); document.write(nowhours); if (nowhours <= 3) { msg = "こんばんは"; } eles if (nowhours <= 11) { msg = "おはようございます"; } eles if (nowhours <= 16){ msg = "こんにちは"; } eles { msg = "こんばんは"; } document.write(msg); //--> </script> 正しい答えは <script type="text/javascript"> <!-- now = new Date(); nowhours = now.getHours(); document.write(nowhours); if (nowhours <= 3 ) { msg = "こんばんは"; } else if (nowhours <= 11) { msg = "おはようございます"; } else if (nowhours <= 16){ msg = "こんにちは"; } else { msg = "こんばんは"; } document.write(msg); // --> </script> なのですが、どこが違うのかまったくわかりません。

    • ベストアンサー
    • Mac

専門家に質問してみよう