2016-09-09 30 views
0

我試圖創建此函數,其中函數從數組中隨機選擇一個值,然後將其打印出來並存儲到#kaytetyt檢查並打印陣列中的所有數字時崩潰

它也會檢查號碼是否已經在#kaytetyt中找到,如果是,那麼它會再次嘗試,直到它找到全新的號碼。

問題是當它達到在這種情況下九個數組長度限制。瀏覽器將崩潰。如何防止這一點?當所有數字都在使用時,它可能會說「所有數字都在使用中」。如果你有一些想法如何改進代碼,請不要共享,謝謝;)

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