2014-05-01 44 views
0

我正在嘗試使用JQuery創建一個JavaScript代碼段,該代碼段具有不斷變化的隨機數並將顯示在不同的文本框中。在不同的輸入文本上生成隨機數並確保顯示的隨機數是唯一的

但是,我不知道如何使數字顯示每個文本框不同的值。我怎樣才能做到這一點?

這裏是我的JavaScript代碼至今:

var pcount = $(".pcount"); 
for(var i= 0; i < pcount.length; i++){ 
var n = []; 
var element = pcount.eq(i); 
setInterval(function() { 
    n[i] = 10 + Math.floor(Math.random(Number($(".pcount").val())) * 10);  
    $('.pcount').val(n[i]); 
}, 1000);} 

下面是文本框的HTML代碼:

<input type="text" class="pcount pc1" value="10"/> 
<input type="text" class="pcount pc2" value="13"/> 
<input type="text" class="pcount pc3" value="16"/> 
+0

的可能重複[關閉的Javascript內循環 - 簡單實用的例子(http://stackoverflow.com/questions/ 750486/javascript-closure-inside-loops-simple-practical-example) – Barmar

回答

0

爲確保隨機數是真正獨一無二的,你必須保持跟蹤之前出現的所有隨機數字,如果發生衝突,請生成一個新數字:

var makeUniqueRandom = (function() { 
    var randoms = {}; 
    return function(low, hi) { 
     var rand; 
     while (true) { 
      rand = Math.floor((Math.random() * (hi - low)) + low); 
      if (!randoms[rand]) { 
       randoms[rand] = true; 
       return rand; 
      } 
     } 
    } 
})(); 

用法:

var rand = makeUniqueRandom(1, 10); 

注意:你必須絕對確保你不會耗盡可用的隨機數,因爲如果你這樣做,它會變成一個無限循環。所以,如果你要求1-10個隨機數(9個可能的值),那麼不要超過9次。


爲了把隨機值到<input>標籤,你可以這樣做:

<input type="text" class="pcount pc1" value="10"/> 
<input type="text" class="pcount pc2" value="13"/> 
<input type="text" class="pcount pc3" value="16"/> 

$(".pcount").each(function() { 
    this.value = makeUniqueRandom(1, 10); 
}); 
+0

謝謝你的回答,但是我怎樣才能在不同的文本框中顯示隨機數字? – reenraan

+0

@ user3591429 - 我添加了如何用唯一的隨機數填充一些''標籤。 – jfriend00

+0

waaaaa!非常感謝! T^T終於得到它的工作,非常感謝! – reenraan