JavaScriptで偶数・奇数の判定をするプログラムを作成する方法

このQ&Aのポイント
  • JavaScriptで判定ボタンを押した際に入力された数値が偶数か奇数かを判定するプログラムを作成する方法を説明します。
  • また、数値以外が入力された場合や入力が空白の場合にエラーメッセージを表示する方法も紹介します。
  • JavaScriptの基本的な条件分岐文を使用して、入力値の判定とエラーメッセージの表示、そして偶数・奇数の判定を行います。
回答を見る
  • ベストアンサー

javascriptでわからないことがあります。

javascriptで判定ボタンを押したらぐ偶数、奇数の判定をするプログラムを作っているのですが数値以外が入力されたら2回目のelse ifで「数値を入力してください」と表示したいのですが調べてもよくわかりません。 また、判定ボタンを押したときにテキストボックスの中が空白であったり、数値以外が入力された場合に「数値を入力してください」と表示しますが続けて偶数、奇数の判定もしてしまうので困っています。 ソースコードです↓ function han2(){ var frm_txt1=document.F1.han1.value; var frm_txt2=parseInt(frm_txt1); if(frm_txt2=="") { alert("数値を入力してください"); } else if() { alert("数値を入力してください"); } if(frm_txt2%2==0) { alert(frm_txt2+"は偶数です"); } else { alert(frm_txt2+"は奇数です"); } } 文章が下手ですみませんがよろしくお願いします。

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

  • ベストアンサー
回答No.1

if(isNaN(frm_txt2)) {  alert("数値を入力してください"); } else {  if(frm_txt2%2==0) {   alert(frm_txt2+"は偶数です");  } else {   alert(frm_txt2+"は奇数です");  } } parseIntは数値化できないときにはNaNを返します。 なのでNaNでなければ数値になっていると判定できるかと。 あとは数値になっている場合のみ偶数か奇数かの判定を行う、とすればいいかと。

azuma444
質問者

お礼

お礼が遅くなり申し訳ありません。 ありがとうございました。

azuma444
質問者

補足

回答ありがとうございます。 すみませんisNaNの所の意味がよくわからないので教えてもらえませんか? それとよければ「あとは数値になっている場合のみ偶数か奇数かの判定を行う、とすればいいかと。」のところも教えてもらえるとありがたいです。

その他の回答 (2)

回答No.3

isNaN() はNumber型の関数で、NaNかどうかを判定しbooleanを返します。 NaNはNot a Number(だったかな?)の略で、この変数が何かのオブジェクトを持っている(nullやundefined でない)けど、数字として認識不可だよ、みたいな状態です。 なので、 var a = parseInt( "a" ); → NaNが入る var b = parseInt( "10" ); → 10が入る である場合、 isNaN( a ); → true isNaN( b ); → false になり、あとは数値になっている場合のみ、つまり、isNaNがfalseを返す場合のみ偶数奇数チェックをすればいいので、if文のelse内で偶数奇数チェックをすればいい、ということになります。

azuma444
質問者

お礼

y_free_tempさん お礼が遅くなり申し訳ありません。 ありがとうございました。

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.2

質問内容とは関係ないことではありますが、気になったことを一つ。 JavaScript の関数 parseInt でよくやりがちなバグとして、 * ユーザーが "012" と入力 * 頭ゼロは8進数と見なして、parseIntの結果が 10 というのがあります。 なので、この関数を使うときは第二引数 radix に 10 を必ず指定しましょう。 参考 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseInt

azuma444
質問者

お礼

Ogre7077さん お礼が遅くなり申し訳ありません。 ありがとうございました。

関連する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>

  • javascriptのisNaNについて。

    javascriptのisNaNの意味について教えてください。 数値のときはfalseを返し数値以外ののときはtrueを返すのはわかるのですがそれで数値以外がテキストボックスに入力された場合の判定に使いたいのですがどうしたらいいでしょうか? if(isNaN(frm_txt){ } 上のようにやったらどうなるのでしょうか? ご回答よろしくお願いします。

  • Javascript初心者です。

    Javascript初心者です。 どうしてもわからなくて困っています。 下の図のように1から、最大10個の☆をalertで表示させるものをつくったのですが ☆ ☆☆ ☆☆☆ ☆☆☆☆ ~ ☆☆☆☆☆☆☆☆☆☆ for(var i = 1; i <= 10; i++){ //alert("☆"); var star = ""; for(var j = 1; j <= i; j++){ star += "☆"; }     alert(star); } これを用いた2つの応用問題に苦戦しています。 (1)偶数の場合は★のみで表示 ☆ ★★ ☆☆☆ ★★★★ ~ ★★★★★★★★★★ (2)偶数の番号の☆マークが★に ☆ ☆★ ☆★☆ ☆★☆★ ~ ☆★☆★☆★☆★☆★ といったものです。説明がわかりづらいかもしれませんが、 偶数、奇数をif文で条件分岐することは理解しているのですが、 web上で調べてもわからず、ループの階層構造がイメージできないまま苦戦しています。 どなたか宜しくお願い致します。

  • このJAVAの課題について教えてください

    package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class jspmodai4Servlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("Windows-31J"); response.setContentType("text/html; charset=Windows-31J"); PrintWriter out = response.getWriter(); String[] nam = request.getParameterValues("text1"); int x = Integer.parseInt(nam[0]); int y = Integer.parseInt(nam[1]); String ans = request.getParameter("radio1"); int z = 0; for(int i = 0; i < z; i++){ } if(ans.equals("value1")){ z = x + y; out.println("奇数の結果は" + z); } }else if (ans.equals("value2") && z%2==0 ){ z = x + y; out.println("偶数の結果は" + z); }else if(x == y){ out.println("エラー"); }else{ out.println("エラー"); } } } 入力フォームから二つの数値を入力させ、「計算」ボタンを押すと、 二つの数値を含む数値間の奇数のみ足し算するプログラム。 でif値がおかしいので奇数と偶数の判定ができません テキストの問題の答えがないので、 なんともいえませんが、 友達に聞いたら、例えば2つの入力フォームで1と4を記述したら、 偶数なら2と4で6となり、奇数なら1と3で4になるそうです。 よろしくお願いします

  • javascriptの入力制限keycode除く

    はじめまして javascript初心者です テキストエリアに数字のみ入力できるようにしたいと思い 以下のとおりソースを記述しました function numCheck(){ var num = document.frm.txt.value; var cnum = num.replace(/[^0-9]/,""); num = cnum; document.frm.txt.value = num; <form name = "frm"> <input type="text" onkeypress="numCheck()" value="txt"> </form> キーコードによる入力制限は考えません あと何が足りないでしょうか? よろしくご教授くださいm(__)m

  • 整数でないとき

    10 INPUT X 20 IF X=0 THEN END 30 C=X-2*INT(X/2) 40 IF C=0 THEN PRINT”偶数” ELSE PRINT”奇数” 50 GOTO 10 というプログラムはXが整数でなければ奇数と判定してしまいます。20行と30行の間に命令を追加して、Xが整数でないときは”整数でない”と表示して、次の入力を待つように修正し、整数のときだけ奇数か偶数かを判定するようにするには、 25 IF X^2>INT(X^2) THEN PRINT”整数でない”:GOTO 10 を追加する。 でよいのでしょうか? ぜひ教えてください。 

  • プルダウンメニューを選択していない時に送信ボタンを押した場合、(必須の)アラートを表示したい。

    過去にほぼ同じ質問がありましたが、それでも解決出来なかったので質問させていただきました。 フォームで未入力の項目に対してアラートとフォーカスされるようにしました。 そこにプルダウンメニューを加えたものを作ろうとしたのですが、アラートの内容が全部同じ(職業が選択されていません)になってしまった事と、アラートは表示されたのですが、プルダウンメニューを選択してもアラートが出続けてしまいます。 プルダウンメニューが未選択の場合にのみアラートを表示するにはどうしたらよいでしょうか。 <SCRIPT language="JavaScript"> <!-- function chkHissu(frm){ var hissu=Array('name','kana','age','mail','sex','syumi'); var hissu_nm = Array('名前','フリガナ','年齢','メールアドレス','性別','趣味'); var len=hissu.length; for(i=0; i<len; i++){ var obj=frm.elements[hissu[i]]; if(obj.type=='text' || obj.type=='textarea'){ if(obj.value==''){ alert(hissu_nm[i]+'は必須入力項目です'); frm.elements[hissu[i]].focus(); return false; } }else{ for(var j=0, chk=0; j<obj.length; j++){ if(obj[j].checked) chk++; } if(chk==0){ alert(hissu_nm[i]+'は必須入力項目です'); return false; } } } return true; } function check(value){ //数字かどうかのチェック if(isNaN(value)){ alert("数値を半角で入力してください。"); //警告コメント document.form1.age.focus(); return false; } //入力があるかどうかのチェック if(!value){ alert("年齢を入力してください。"); //警告コメント document.form1.age.focus(); return false; } } function checkAd(address){ if(!address){ alert("メールアドレスを入力してください。"); } else if(address.indexOf("@",0)<=0){ alert("メールアドレスが正しくありません。"); document.form1.mail.select(); return false; } } //-- </SCRIPT> ご存知の方がいらっしゃいましたらご教授願います。

  • javascriptの勉強中です

    javascriptについて勉強中で、switch文とif文を組み合わせようと考えています。 やりたいことは、数値を入力してもらい、入力した文字をnumberに表示します。 また、nyuryokuにキャンセルや入力されていないことを通知します。 ここまではできたのですが、入力の確認画面でキャンセルした場合「もう一度入力してください」とアラートと記述を行いたいのですが、trueが返っているのか数値が記載され、「ありがとうございます」の記述が行われます。 この場合はどうすれば入力確認のアラートを出すことができるのでしょうか。 下記をご確認ください。 <script> function putin() { var num = prompt('数値入力'); switch (num) { case '': document.getElementById('nyuryoku').innerText =('入力してください。'); alert ('入力してください'); str = ('入力してください'); break; case null: document.getElementById('nyuryoku').innerText =('キャンセルされました'); str = ('キャンセルされました'); break; default: confirm('入力内容はこちらでよろしいですか?'); if (true) { document.getElementById('number').innerText = num; document.getElementById('nyuryoku').innerText =('ありがとうございます'); } else { alert('入力内容を確認しもう一度入力してください'); document.getElementById('nyuryoku').innerText('入力内容を確認しもう一度入力してください'); } } } </script> <a onclick="putin()">数値はここで入力が必要</a> <br> <span id="number">ここに数値</span> <br> <span id="nyuryoku"></span> ヒントでもよいので、何卒よろしくお願いします。

  • 二つの入力フィールドの比較方法

    度々申し訳ありません 二つの日付フィールドの大小比較をしたいのですが、 うまくいきません。 ソースは以下のとおりです。 if ((frm_G_JINFOINPT.txt_TEKI_S.Value) > (frm_G_JINFOINPT.txt_TEKI_E.Value)) { エラーメッセージ表示ロジック { return false; } } 他にも if ((frm_G_JINFOINPT.txt_TEKI_S.Value * 1) > (frm_G_JINFOINPT.txt_TEKI_E.Value * 1)) を試してみましたがだめでした。 alertで結果を見てみると、 txt_TEKI_S にtxt_TEKI_Eより小さい値を入れても、大きい値を入れても、 ">"を"<"に変えてみてもすべて結果は"false"でした(;_;) 入力値は日付の値が"YYYYMMDD"形式の数値で入力されます。 ご指摘よろしくお願いします・・・。(;_;)

  • 奇数と偶数をそれぞれ足していく:python

    私は、今プログラミングの勉強をしています。そこでfor,if,wheleを使ったプログラムの練習として奇数と偶数をそれぞれ足していくプログラムを作ろうとしているのですが思うように行きません。そのためpythonでこのプログラムを書いていただけないでしょうか。 どうかよろしくお願いします。 仕様としては、下記のようです。 数値を入力してください。 10 奇数:1、偶数:2 奇数:3、偶数:4    ・   ・      ・   ・    ・   ・ 奇数の合計:25、偶数の合計:30 こんな感じのイメージです。

専門家に質問してみよう