• 締切済み

JavaScriptに詳しい方居ますか?

YESの数で診断するXX度チェックについてですが、 JavaScript は詳しくありません。 下記のものは、あるHPで見つけたものですが、 チェック項目を増やしたり出来ないものでしょうか? 出来るのであれば修正してもらえませんか 現在は5項目ですが、10項目にしたいと思っています 診断内容についても載っていたのをコピーして載せただけなので、 変更しようと思っています。 詳しい方、宜しくお願い致します。 <script language="JavaScript"><!-- function myCheck(){ myCnt=0; // チェックした数 for (i=0; i<document.myForm.length-1; i++){ // チェックボックスの数分ループ if (document.myForm.elements[i].checked == true){ // チェックはオンか? myCnt++; // チェック数 加算 } } if ( myCnt == 0 ) myMess="正常"; // チェックは 無し(ゼロ) else if ( myCnt <= 2 ) myMess="ちょヤバ"; // チェックは 1以上2以下 else if ( myCnt <= 4 ) myMess="危険気味"; // チェックは 3以上4以下 else myMess="完璧に危険"; // チェックは 全部(5) myComment = "危険度チェック 診断結果\n\nあなたは、"+myMess+"です!"; alert (myComment); } // --></script> <form name="myForm"> <input type="checkbox">たばこは1日20本以上吸う<br> <input type="checkbox">お酒を飲むと性格が変わる<br> <input type="checkbox">車を運転すると性格が変わる<br> <input type="checkbox">刃物を手にすると心がなごむ<br> <input type="checkbox">ピストルを所持している<br> <input type="button" onclick="myCheck()" value="診断"><br> </form>

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

もとのソースは、「とりえあえず動けばいい」的な書き方をしてます。 for(・・・)のところでlengthから1をひいてますが、これは 最後のボタンをチェックしないための姑息な手法でお勧めできません。 チェックボックスの数をカウントするのであれば、タイプ(type)を チェックすると言うのがあるべき姿でしょう。 以下のようにするとチェックボックスはいくらでも増やせますので、 ためしてみてください。 判定はelse if・・・のところに小さい順に判定結果を 書いていけばよいでしょう <script language="JavaScript"> function myCheck(f){ var myCnt=0; for (var i=0; i<f.length; i++){ if (f[i].type=="checkbox" && f[i].checked) myCnt++; } if ( myCnt == 0 ) myMess="正常"; else if ( myCnt <= 2 ) myMess="ちょヤバ"; else if ( myCnt <= 4 ) myMess="危険気味"; else myMess="完璧に危険"; var myComment = "危険度チェック 診断結果\n\nあなたは、"+myMess+"です!"; alert (myComment); } </script> <form name="myForm"> <input type="checkbox">たばこは1日20本以上吸う<br> <input type="checkbox">お酒を飲むと性格が変わる<br> <input type="checkbox">車を運転すると性格が変わる<br> <input type="checkbox">刃物を手にすると心がなごむ<br> <input type="checkbox">ピストルを所持している<br> <input type="button" onclick="myCheck(this.form)" value="診断"><br> </form>

  • uuyn2006
  • ベストアンサー率50% (24/48)
回答No.2

こんにちわ^^ ここで説明するのは凄く難しいのですが・・・ 『for (i=0; i<document.myForm.length-1; i++){ // チェックボックスの数分ループ』 と言う部分ですが、HTMLの中のFormについてJAVAScriptでチェックする部分です。 「document.myForm.length」ですが、documentはHTMLで言うBODYに当たります。その中の「myForm」と言う名前のところのlength(長さ)を参照しています。 つまり、「チェックボックスの個数がいくつあるか」を自動でチェックしています。 と言うことは、チェックボックス自体を増やせば、勝手に、チェック数も増えるので、もし、10個のチェックボックスを作りたければ 『<form name="myForm"> <input type="checkbox">たばこは1日20本以上吸う<br> <input type="checkbox">お酒を飲むと性格が変わる<br> <input type="checkbox">車を運転すると性格が変わる<br> <input type="checkbox">刃物を手にすると心がなごむ<br> <input type="checkbox">ピストルを所持している<br> <input type="checkbox">CHECK6<br> <input type="checkbox">CHECK7<br> <input type="checkbox">CHECK8<br> <input type="button" onclick="myCheck()" value="診断"><br> </form>』 と言うふうに、FORMのなかに増やしてあげればOKです。 また、『 if ( myCnt == 0 ) myMess="正常"; // チェックは 無し(ゼロ) else if ( myCnt <= 2 ) myMess="ちょヤバ"; // チェックは 1以上2以下 else if ( myCnt <= 4 ) myMess="危険気味"; // チェックは 3以上4以下 else myMess="完璧に危険"; // チェックは 全部(5) myComment = "危険度チェック 診断結果\n\nあなたは、"+myMess+"です!"; alert (myComment); }』 この部分は、「チェックボックスにいくつチェックが入っているかによってだすコメントを変えている」所です。 IFと言うのは「もし」と言う意味ですが、「if(myCnt == 0)」となった場合、「もしmyCntが0に等しいならば」と言う意味になります。(myCntは変数。変数とは数学で言うXやYに当たります) なので、それに続く、else if(myCnt <= 2)の部分を変えてあげれば判断文も増やせます。 if ( myCnt == 0 ) myMess="正常"; // チェックは 無し(ゼロ) else if ( myCnt <= 2 ) myMess="ちょヤバ"; // チェックは 1以上2以下 else if ( myCnt <= 4 ) myMess="危険気味"; // チェックは 3以上4以下 else if ( myCnt <= 6 ) myMess="めちゃくちゃ危険"; else myMess="完璧に危険"; // チェックは 全部(5) myComment = "危険度チェック 診断結果\n\nあなたは、"+myMess+"です!"; alert (myComment); } と言う感じです JAVAScriptについて詳しいことは本を読まれてはいかがでしょう。 2000円ぐらいから本屋さんに並んでるかと思いますので。

回答No.1

>チェック項目を増やしたり出来ないものでしょうか? できます。診断条件も変えないでいいのなら、項目を増やすだけです。 診断条件を変えるとしても、数字を調整するだけです。 でも残念ながら、JavaScriptに詳しいとはいえないので詳細は遠慮させていただきます。

関連するQ&A