我有一些腳本首先生成一個div,然後將背景設置爲隨機的十六進制顏色。目前,當它設置div的背景顏色時,它會爲該類的所有div設置背景顏色。生成同一類的div,但要單獨更改樣式
我該如何設置它只設置它創建的div的顏色並讓其他人獨立?
function makeThing(){
var back = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];
var hex = back[Math.floor(Math.random() * back.length)];
var hex1 = back[Math.floor(Math.random() * back.length)];
var hex2 = back[Math.floor(Math.random() * back.length)];
var hex3 = back[Math.floor(Math.random() * back.length)];
var hex4 = back[Math.floor(Math.random() * back.length)];
var hex5 = back[Math.floor(Math.random() * back.length)];
var rand = "#" + hex + hex1 + hex2 + hex3 + hex4 + hex5;
$('body')
.append("<div class='thing'></div>");
$('.thing').css('background',rand);
}
setInterval(makeThing,1000);
downvoter想解釋一下爲什麼? – Macmee
使用':last'並讓JS解析整個文檔搜索所有這些元素,而不是僅僅在可以立即完成''last''時才應用CSS''last'。在這種情況下,你稱之爲*面向對象*是不準確的。 *「或者一個純粹的jQuery解決方案」* ......你之前展示的jQuery也是* pure *。在處理內存中元素時,最好先將所有CSS應用到該元素,然後再將其插入到DOM中。 –
@ RokoC.Buljan我在回答中解釋說最後的解決方案是最慢的,所以我們達成了一致。我們也同意,在注入DOM之前設置CSS是很好的,因此我的第二種方法仍然是我的最愛,它仍然是最「OOP」的解決方案,因爲您將節點表示爲對象,與第一種解決方案不同這只是一個字符串.... – Macmee