質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.01%

  • JavaScript

    13830questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

特定の範囲の処理を繰り返す方法

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 139

m_qig

score 2

度々お世話になります…

今回は、ある特定の範囲に書かれている処理を繰り返す方法が知りたいです。

<html>

<button onclick="fnc()">クリック<button>

<p>a<span id="result"></span></p>
<p>b<span id="result2"></span></p>

</html>
<javascript>

function fnc(){


var randombox[a,a,b,b,a];


  shori:while(countb<10){
//処理
  for(var i=0; i<10; i++;){
    var ransu=Math.floor(Math,random()*5);

  var nakami1=randombox[0];
  var nakami2=randombox[ransu];

  randombox[ransu]=nakami1;
  randombox[0]=nakami2;
  }

var  counta=0;
var  countb=0;

  if(randombox[0]==a){
  counta+=1;
  }
  else if(randombox[0]==b){
  countb+=1;
  }
//処理'

  if(counta===1){
  continue:shori
  }
  }

resulta.innerHTML=counta;
resultb.innerHTML=countb;

こんな感じで、クリックするたびに配列の中からaかbを取り出して、aだったらcountaを+1する、bだったらcountbを+1して、結果を表示する、ところまではよいのですが、countaは1より増やしたくなく、もしaが選ばれてしまった場合は、//処理 のところまでもどって、bが取り出されるまで//処理〜//処理'間を繰り返す、というプログラムを作りたいのですが、???のところにどう記述したらよいかわかりません…。じゃあcountaを-1すればいいじゃん、というのではなく、あくまでbが選ばれるまで//処理〜//処理'を繰り返したいのです。
本当はjavascriptもっと500行くらいの複雑なプログラムなのですが、ここに投稿する為に急いで簡素化したので、細かい記述ミスなどどうかお見逃しください…

よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

ちょっと意味がわからないのですが、データの持ち方を変えてみては?

var randombox=["a","a","b","b","a"];
var r1=Object.entries(randombox);
r1=r1.sort(function(i,j){return Math.random()<0.5;});
console.log(r1);


先頭データをとりだして違ったら再抽選

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/27 15:18

    回答ありがとうございます。
    わたしもどう書いたらいいか分からず、わかりにくくて申し訳ございません。
    ただ、本当は500行くらいのプログラムの中で使いたく、抽選の方法は今回ぶっちゃけあまり関係ないのです…

    キャンセル

0

処理が条件に合うまで while で繰り返せばよいのでは?

【while - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/while

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/27 15:17

    いつもありがとうございます。

    それはなんとなくわかっているのですが、やり方が分からず…
    whileを使って記述すると、クリックした時、結果が一気に表示されてしまいます。そうではなくて、1回クリックする度にカウントアップにしたいのです…

    キャンセル

  • 2017/10/27 15:20

    そのコードを質問文に追記してください。多分判定の問題だと思うのですが。

    キャンセル

  • 2017/10/27 15:43 編集

    追記してみました。
    今回a:b=1:9にしたいので、whileの条件がb<10になってます。

    キャンセル

  • 2017/10/27 18:05

    簡略化するにしてもエラーの出ないコードにして欲しいです。

    1. 処理を抜けるかのフラグを作る
    2. whileの条件に上記フラグを使う
    3. 最終的にcountaが1か、bが10になったら条件フラグに設定

    > 1回クリックする度にカウントアップにしたいのです…
    そのループを通る限りcountaは1か0に固定されますし、それが出るまでcountbはプラスされるため、1クリックで1カウントアップにはそもそもなりませんが・・・。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.01%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    カウントを行ったり来たりしたい。

    凄く初歩的なプログラムかもしれませんが、 行き詰まっています。。。 ■やりたいこと クリックするたびに、 カウントを0~5まで、ひとつずつ増やしていき、 5まできたらひとつずつ

  • 受付中

    javascriptのon clickイベントで関数以外を実行させたい

    on clickイベントで $("startButton").onclick =  start() のようにスタートボタンを押したら関数を実行させたいのですが、 スタートボタンを押

  • 解決済

    ボタンをクリックすると画像をランダムに表示させたい

    ボタンを押すと、ランダムに画像を表示させたいのですが、表示すらされません。 <!DOCTYPE HTML> <html> <head> <meta charset="u

  • 解決済

    カウントダウンタイマー

    前提・実現したいこと カウントダウンタイマーのjsを実装しています。 残り時間の日数を『あと○時間△分□秒』という具合にすべて時間で表示させたいのですが記述方法を教えてください。

  • 解決済

    ボタンをクリックして表示される文字列を条件分岐して表示させたい

    テキストボックスに数値を入力して、その値によって文字列を表示したいです。 しかし、どの値を入れても、最初の条件にマッチし、「軽すぎ」としか表示されません。 おまけに、formタグの

  • 解決済

    javascript removeが効かない問題

    現在、htmlとjavascriptで、コメントフォームを作っています。 作成にあたって問題が発生したので、その原因と対策法をうかがいたく、質問させていただきます。 まず、下の

  • 解決済

    javascriptでランダムに文字を出力し続ける

    javascriptを使ってPC対クライアントでじゃんけんをするプログラムを作成しています. 作りたいものとしては, ・PC側はランダムにグー,チョキ,パーを画面に出し続ける

  • 受付中

    JavaScript

    <p class="q-body"> <input id="q2-1" type="text"></input> × <input id="q2-2" type="text"></

同じタグがついた質問を見る

  • JavaScript

    13830questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。