我正在尝试定位多个div
并随机更改背景颜色(或其他属性)。我已经能够使用document.body.style.background
来定位身体背景,但我不确定这会对多个元素起作用。任何见解都会很好。
以下是我试图通过以下方式实现的一些代码:
function randBGcolor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i=0; i<6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
document.body.style.background = color;
}
我还想使用随机颜色功能,但只需点击一下即可将其应用于多个元素。
答案 0 :(得分:0)
使用jQuery和你的函数:
function randBGcolor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i=0; i<6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
$('#button').on('click', function() {
$('div.classname').css('background-color', randBGcolor());
})
答案 1 :(得分:0)
我认为你可以用JQuery来实现这个目标,你或许可以找到一个知道纯JS的人。
您可以使用div
each()
个标记
http://jsfiddle.net/Kwb49/ - 此示例在点击正文时更改所有divs
$(document).ready(function() {
$('body').click(function() {
$('div').each(function() {
var bgcolor = randBGcolor();
$(this).css({ "background" : bgcolor });
});
});
});
function randBGcolor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i=0; i<6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
答案 2 :(得分:0)
纯JS解决方案:
http://jsfiddle.net/Kwb49/3/(更新小提琴,点击工作,添加一个测试按钮)
function randBGcolor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i=0; i<6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
divs=document.getElementsByTagName('div');
for(i=0;i<divs.length;i++) {
divs[i].style.backgroundColor=randBGcolor();
}
答案 3 :(得分:0)
css
方法可以与回调函数一起使用,这样您就可以选择要更改的所有元素,并通过一次调用为每个元素获取单独的背景颜色:
function randBGcolor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * letters.length)];
}
return color;
}
$('.someelements').css('background-color', randBGcolor);
演示:http://jsfiddle.net/Guffa/Tp856/
要在点击事件中使用它,您只需在click
事件中使用ready
方法。例如:
$(document).ready(function(){
$('.someelement').click(function(){
$('.someelements').css('background-color', randBGcolor);
});
});
注意:在计算随机数时,不使用Math.random
。这将使得最低和最高值的选择频率是其他值的一半。使用Math.floor
和mulitply与一个更高的数字。
答案 4 :(得分:0)
我建议在兼容浏览器中使用纯JavaScript的一种方法是:
function randColor(n) {
var result = [];
for (var i = 0; i < n; i++) {
result.push(Math.floor(Math.random() * 255));
}
return result.join(',');
}
function randBGColor () {
return 'rgb(' + randColor(3) + ')';
}
var els = document.querySelectorAll('div');
[].forEach.call(els, function(a) {
a.style.backgroundColor = randBGColor();
});