2016-09-09 3 views
0

関数が配列から値をランダムに選択してプリントアウトし、#kaytetytに格納するということを作成しようとしています。配列からすべての数値をチェックして印刷したときにクラッシュする

#kaytetytにすでに番号があるかどうかを確認します。それが真である場合は、新しい番号が見つかるまで再試行します。

この場合、配列の長さの制限が9に達したときに問題があります。ブラウザがクラッシュします。これを防ぐ方法は?また、すべての数字が使用中であれば、「すべての数字は使用中です」と言うことができます。あなたは、コードを改善する方法をいくつかのアイデアを持っている場合は、共有を行ってください、ありがとう;)

var testi = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]; 

$(function() { 

$("#arvo").click(function() { 

    var koodi = testi[Math.floor(Math.random() * testi.length)]; 

    if ($('#kaytetyt > pre:contains(' + koodi + ')').length > 0) { 

     $("#console").append("<pre class='red'>" + koodi + " is used, randoming new one</pre>"); 

     do { 
      koodi = testi[Math.floor(Math.random() * testi.length)]; 
     } while ($('#kaytetyt > pre:contains(' + koodi + ')').length > 0); 

     $("#kaytetyt").append("<pre class='new'>" + koodi + "<pre>"); 
     $("#console").append("<pre class='new'>" + koodi + "</pre>"); 

    } else { 
     $("#console").append("<pre>" + koodi + "</pre>"); 
     $("#kaytetyt").append("<pre>" + koodi + "</pre>"); 
    } 
}); 

}); 

https://jsfiddle.net/jaakkouu/4et38ktj/10/

+0

利用可能な番号がすべて既に使用されているかどうかを確認する必要があります。あまりにも綿密に見ていないと、 'if($( '#kaytetyt> pre')。length> = testi.length){alert(" all done "); } ' –

答えて

0

それは良い作品のために、このコードを試してみてください。

$(function() { 

$("#arvo").click(function() { 

    var koodi = randomIntFromInterval(1,9); 

    if ($('#kaytetyt > pre:contains(' + koodi + ')').length > 0) { 

     $("#console").append("<pre class='red'>" + koodi + " is used, randoming new one</pre>"); 

     do { 
      koodi = randomIntFromInterval(1,9); 
     } while ($('#kaytetyt > pre:contains(' + koodi + ')').length > 9); 

     $("#kaytetyt").append("<pre class='new'>" + koodi + "<pre>"); 
     $("#console").append("<pre class='new'>" + koodi + "</pre>"); 

    } else { 
     $("#console").append("<pre>" + koodi + "</pre>"); 
     $("#kaytetyt").append("<pre>" + koodi + "</pre>"); 
    } 
}); 

function randomIntFromInterval(min,max) 
{ 
    return Math.floor(Math.random()*(max-min+1)+min); 
} 

}); 
+0

これはまだすべての数字が通過したとしても数字を表示します。 –

+0

これは別のことですが、クラッシュの問題はなくなりました。 – Peacefull

関連する問題