2014-04-24 75 views
1

這裏是我的代碼:重構的Javascript

var randomColor = ["red", "blue", "green", "#9CBA7F", "yellow", "#BF5FFF"]; 

function setRandomColor() { 
return randomColor[Math.floor(Math.random() * randomColor.length)]; 
} 

$('.mastermind_master_cpu').each(function() { 
$(this).find('td').each(function() { 
    $(this).css("background-color", setRandomColor); 
}) 
}) 

正如你所看到的,mastermind_master_cpu表將隨機與不同的背景顏色填充。問題是我有十個不同的表格,每次都重複這個表格。有誰知道我可以怎麼做只是一個函數/變量,並在需要時調用它?

謝謝!

+3

認爲http://codereview.stackexchange.com是這個問題的更好地方。 –

+1

...雖然我不知道你的重複是從哪裏來的。在我看來,你現在正在迭代不同的表格。 –

+1

你似乎錯過了將一個函數傳遞給'.css()'的意思。重點在於它迭代了一個集合,但是您將它傳遞給具有單個元素的集合。爲什麼不''(this).find(「td」)。css(「background-color」,setRandomColor)'? –

回答

3

創建一個類,說random_color,除了適用於每個表到當前類,像這樣:

<table class="mastermind_master_cpu random_color">...</table> 

然後你可以用這一次,

$('.random_color').each(function() { 
$(this).find('td').each(function() { 
    $(this).css("background-color", setRandomColor); 
}) 
}) 

但作爲cookie monster指出,這可以做得更加簡潔:

$('.random_color td').css("background-color", setRandomColor); 

Demonstration

+0

你不只是在做同樣的事情,而是與不同的課程? –

+0

......哦,也許現在每個表都有一個獨特的類。這很奇怪。 –

+2

@cookiemonster這就是我懷疑的問題。 –