2013-04-10 50 views
1

我需要jquery來創建一個只包含數字的數組,這些數字是用複選框選中的。換句話說,我需要math.random排除未經檢查的答案。將有更多的複選框,當我得到了這個問題如何從數學中排除單個數字.random

if ($('#check1') .is(':checked')) { 
    var nrI = "1"; 
} else { 
    var nrI = ""; 
} 
if ($('#check2').is(':checked')) { 
    var nrII = "2"; 
} else { 
    var nrII = ""; 
} 

var numbrid = [nrI,nrII]; 

if (nrI + nrII == 0) { 
    var numRand = Math.floor((Math.random()*2)+1); 
} else { 
    var numRand = Math.floor((Math.random()*numbrid.length)+1); 
} 
$("#number") .text(numRand); 
+0

給定的代碼是否工作正常 – 2013-04-10 06:23:07

+0

正確的解決這個問題是把所有可能的有效數字陣列中的(全部來自複選框的數字),然後選擇一個隨機數從0到數組長度的整數。 – 2013-04-10 06:25:06

回答

1

嘗試

var numbrids = $('input[id^="check"]:checked').map(function(index, el) { 
    return $(el).attr('id').substring(5); 
}); 

if (numbrids.length) { 
    var numRand = Math.floor((Math.random() * numbrids.length) + 1); 
} else { 
    var numRand = Math.floor((Math.random() * 2) + 1); 
} 
$("#number").text(numRand); 

我不知道這個問題的,即第二部分要與numbrids

做什麼

演示:Fiddle

如果你的要求是一樣的@AndyRay評論然後

var numbrids = $('input[id^="check"]:checked').map(function(index, el) { 
    return $(el).attr('id').substring(5); 
}), numRand; 

if (numbrids.length) { 
    numRand = numbrids [Math.floor((Math.random() * numbrids.length))]; 
} else { 
    numRand = 0; 
} 
$("#number").text(numRand); 

演示:Fiddle

+0

最後的代碼參考在jsFiddle中工作,因爲我需要。現在我只需要弄清代碼。最後,我想完成類似於這個http://www.musictheory.net/exercises/ear-interval的東西,但我已經研究了jQuery一個星期,只有學習的地方是谷歌 – user2263447 2013-04-10 06:38:45