• 締切済み

お願いしますjavascriptです

javascript 初心者なのですが、どうしてもわからないため、 ご教授お願いたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>おみくじ</title> </head> <body> <script type="text/javascript"> <!-- //0~4の乱数を作る //0:大吉, 1:中吉, 2:小吉 ,3:吉, 4:凶 var rnd = Math.floor(Math.random() * 5) //おみくじの判定 switch (rnd){ case 0: var fortune = "大吉"; break; case 1: var fortune = "中吉"; break; case 2: var fortune = "小吉"; break; case 3: var fortune = "吉"; break; default: var fortune = "凶"; break; } //おみくじの表示 document.write("今日の運勢: " + fortune + "<br />"); //金運の表示 document.write("金運: "); var money = Math.floor(Math.random() * 5) + 1; for (var i = 0; i < money; i++) { document.write("(ダイヤ)"); } document.write("<br>"); //恋愛運の表示 document.write("恋愛運: "); var love = Math.floor(Math.random() * 5) + 1; for (var i = 0; i < love; i++) { document.write("&hearts;"); } document.write("<br>"); //健康運の表示 document.write("健康運: "); var health = Math.floor(Math.random() * 5) + 1; var i = 0; while (i < health){ document.write("(クラブ)"); i++; } document.write("<br>"); //--> </script> </body> </html> このソースに、分岐だと考えますが、 大吉が出た時は、金運、恋愛運、などのマークが3つ以上に設定、逆に 今日ならば各マークが3つ以下に設定するには Javascriptでどういう風に記述すればよいでしょうか。

みんなの回答

  • q-ue
  • ベストアンサー率75% (12/16)
回答No.1

最大値、最小値を変数に入れておき、if 文で分岐させればいいでしょう。 var min=1,max=5,len,num; if (fortune==="大吉") min=3; else if (fortune==="凶") max=3; len=max-min+1; num=Math.floor (Math.random ()*len)+min; これとは別の話ですが、CriaterD_ei1029さんのコードは重複が多いので、配列や関数を使うと簡潔に書けそうです。

関連するQ&A

  • お願いいたします

    javascript 初心者なのですが、どうしてもわからないため、 ご教授お願いたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>おみくじ</title> </head> <body> <script type="text/javascript"> <!-- //0~4の乱数を作る //0:大吉, 1:中吉, 2:小吉 ,3:吉, 4:凶 var rnd = Math.floor(Math.random() * 5) //おみくじの判定 switch (rnd){ case 0: var fortune = "大吉"; break; case 1: var fortune = "中吉"; break; case 2: var fortune = "小吉"; break; case 3: var fortune = "吉"; break; default: var fortune = "凶"; break; } //おみくじの表示 document.write("今日の運勢: " + fortune + "<br />"); //金運の表示 document.write("金運: "); var money = Math.floor(Math.random() * 5) + 1; for (var i = 0; i < money; i++) { document.write("(ダイヤ)"); } document.write("<br>"); //恋愛運の表示 document.write("恋愛運: "); var love = Math.floor(Math.random() * 5) + 1; for (var i = 0; i < love; i++) { document.write("&hearts;"); } document.write("<br>"); //健康運の表示 document.write("健康運: "); var health = Math.floor(Math.random() * 5) + 1; var i = 0; while (i < health){ document.write("(クラブ)"); i++; } document.write("<br>"); //--> </script> </body> </html> このソースに、分岐だと考えますが、 大吉が出た時は、金運、恋愛運、などのマークが3つ以上に設定、逆に 今日ならば各マークが3つ以下に設定するには Javascriptでどういう風に記述すればよいでしょうか。

  • 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の九九の表の書き換えについて

    var a; for (a=1; a<10; a++) if (a<=1){ document.write("   "+a); }else{ document.write(" "+a);} document.write("<br>"); document.write("---------------------------------"); document.write("<br>"); var i, j; for (i=1; i<10; i++) { document.write(i+"|"+" "); for (j=1; j<10; j++) { var k = i*j; if ( k > 81 ) { break; } if (k>=10){ document.write(" "+k+" "); }else { document.write(" "+k);} } document.write("<br />"); } forを使った九九の表はできたのですが これをwhileを使ったコードに書き換えるにはどうしたらいいでしょうか?

  • JAVASCRIPTについて教えてほしいのですが

    <script language="JavaScript"> var imglist = new Array( "top_pic.jpg", "top_pic2.jpg", "top_pic3.jpg", "top_pic4.jpg" ); var selectnum = Math.floor((Math.random() * 100)) % imglist.length; var output = "<img src=" + imglist[selectnum] + ">"; document.write(output); </script> ・・・・という画像をランダムに表示するスクリプトなんですが、 この画像を表示する際のオプション?みたいなのは何処に記入すればよいのでしょうか? align="right"や、width="50%" みたいなやつです。 よろしくお願いします

  • JavaScript/HTML5での図形の描写

    canvasを使って図形の描写をするコードを書いています。 javascript初心者なりに考え、調べたのですがどうしてもわからなかったのでどなたか教えてください。 「入力された値を半径とした円をcanvas内のランダムな位置に、ランダムな色で複数描写する」という風にしたいのです。値は好きなだけ入れれるようにしてあります。現段階でランダムな位置に描写することはできるのですが、黒縁の白い円しか描写できません。「ランダムに彩色する」部分をどのように記述したらよいのかご教授願います。 【以下書いたコード】 function draw() { var canvas = document.getElementById('mycanvas'); var ctx = canvas.getContext('2d'); var r = parseInt(document.getElementById("radius").value); ctx.beginPath(); var drawPointX = Math.floor( Math.random() * 1200 ) + 1; var drawPointY = Math.floor( Math.random() * 600 ) + 1; ctx.arc( drawPointX, drawPointY, r, 0, Math.PI*2, true ); //ランダムな色を生成・彩色する var r = parseInt(Math.random() * 255); var g = parseInt(Math.random() * 255); var b = parseInt(Math.random() * 255); var alpha = Math.random(); var rgba = "rgba("+r+", "+g+", "+b+", "+alpha+")"; ctx.fillStyle=rgba; ctx.stroke(); }

  • javascript 画像切り替え ランダム 順番

    インラインフレーム内のランダムな画像切り替えはできたのですが、順番に切り替えていくというのが出来ません。。。 ランダムソース var imglist=new Array( "100_0003.jpg", "100_0006.jpg", "100_0008.jpg", "100_0009.jpg", "100_0021.jpg", "100_0022.jpg", "100_0023.jpg", "100_0025.jpg", "100_0001.jpg" ); var selectnum=Math.floor((Math.random()*100))%imglist.length; var output="<IMG src=images/randomimg/"+imglist[selectnum]+">" ; document.write(output); 順番ソース var imglist=new Array( "100_0003.jpg", "100_0006.jpg", "100_0008.jpg", "100_0009.jpg", "100_0021.jpg", "100_0022.jpg", "100_0023.jpg", "100_0025.jpg", "100_0001.jpg" ); var selectnum=imglist.length-1; var i=0; function forward() { i=selectnum--; var output="<IMG src=images/randomimg/"+imglist[i]+">" ; document.write(output); } テキストリンクを押してインラインフレーム内の画像を変更していきたいのですが。。。順番にすると真っ白になってしまいます。。。 どなたか解決方法よろしくお願いします。

  • javascriptで重複しないように値を取得したい

    題のとおり、javascriptで重複しないように値を取得したいと思っております。 以下ソースの一部です。 for (var v = 0; v < 5; v++) { var i = 0; var a = Math.floor(Math.random()*test.length); while ( a == i ){ a = Math.floor(Math.random()*test.length); } if (a != i){ i = a; } } このプログラムだと隣り合う回数の1回目と2回目などは重複しないんですが、1回目と3回目は重複してしまいます。 なにか重複しない方法はないでしょうか?初心者説明ですいませんが、ご教授おねがいします。

  • JavaScriptについて

    本を読みながら勉強しているのですが解説が乗っていなくてわからない部分があるので教えてください <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,user-scalable=yes,initial-scale=1.0,maximum-scale=3.0"> <script src="plugins/plugin-loader.js"></script> <link rel="stylesheet" href="plugins/plugin-loader.css"> </head> <body> <canvas id="canvas" width="300" height="300"></canvas> <script> var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); //ランダムに50個多角形の表示 for (var i = 0; i < 50; i++) { randomDraw(); } //指定範囲のランダムな整数を返す関数 function randomI(nFrom,nTo) { var f = nTo - nFrom + 1; return Math.floor(Math.random() * f) + nFrom; } //ランダムに多角形を描画する関数 function randomDraw() { //パス指定 ctx.beginPath(); //点をランダムに決定 var n = randomI(2,7); ctx.moveTo(randomI(0,canvas.width),randomI(0,canvas.hright)); for (var i = 0; i < n; i++) { ctx.lineTo(randomI(0,canvas.width),randomI(0,canvas.height)); } ctx.closePath(); //描画 ctx.fillStyle = "#" + randomI(0,0xFFFFFF).toString(16); ctx.fill(); } </script> </body> </html> というコードでランダムに50個多角形を描画するというものです function randomI(nFrom,nTo) { var f = nTo - nFrom + 1; return Math.floor(Math.random() * f) + nFrom; ここのrandomIとnToとnFromというのは変数名ですか?これはいったい何者ですか? var n = randomI(2,7); ここの数字を変更すると何かが変わるのですがうまく言葉にできません 何がどう変わるのか教えてください

  • ソート(?)がうまくいかない。

    こんにちは、今おみくじスクリプトを作成しているのですが、うまくいかない点があります。 大吉や吉といったランクごとに、健康運や恋愛運といった6つの部分が◎○△×のどれかにランダムでなるというスクリプトをつくりました、うまく実行はされるのですが、処理が重く、IEで「実行をとめますか?」とエラーが出ています。 何か、おかしな点があれば、教えていただけませんか? for(cnt=0;cnt<w.ura;cnt++) { j = Math.floor(Math.random()*i); if(utc[j]==0) utc[j] = "◎"; else{ cnt -=1; } } for(cnt=0;cnt<w.urb;cnt++) { j = Math.floor(Math.random()*i); if(utc[j]==0) utc[j] = "○"; else{ cnt -=1; } } for(cnt=0;cnt<w.urc;cnt++) { j = Math.floor(Math.random()*i); if(utc[j]==0) utc[j] = "△"; else{ cnt -=1; } } for(cnt=0;cnt<w.urd;cnt++) { j = Math.floor(Math.random()*i); if(utc[j]==0) utc[j] = "×"; else{ cnt -=1; } } w.ura等は、ランクごとの◎などの数が格納されたストラクトです。 やっていることは、◎の数まわして、空の配列であれば、◎をいれるといったことです。 よろしくご教授ください。

  • javaScriptでリンク画像のランダム更新表示

    画像をランダム表示する方法はわかったのですが、 各画像にリンク設定したいのと、 各画像の大きさをCSSのwidthやhighのように調整する方法をご教授ください。 <html> <body> <script type="text/javascript"> <!-- var imgURL = ["./images/1.jpg", "./images/2.jpg", "./images/3.jpg"]; var n = Math.floor(Math.random() * imgURL.length); document.write('<img src="'+imgURL[n]+'">'); // --></script> </body> </html>

専門家に質問してみよう