奇怪的请求。我有~300个图像网址和27个div
个。每个div
都有id="img1"
,其中1
是介于1和(您猜对了)27之间的数字,以及class="imageblock"
(用于一般样式)。
对于这些div
中的每一个,我想插入<img src="http://foo.bar/img.jpg" width="640">
,其中从大约300个随机列表中选择URL,并插入其中一个div
1}}随机。 27 div
中的每一个都应该从300个选项中选择自己的图像。
此外,这些图像应该循环。每5秒钟,我希望页面上的一个随机图片网址被另一个随机图片替换。
这是我试图用一点帮助拼凑起来的(可怕的)代码,但我对javascript没用,并且无法完成这项工作:
<script type="text/javascript">
$('document').ready(function() {
var divs = $('div');
$("div").each(function() {
$(this).html("<img src='http://foo.bar/img1.jpg'alt='"+$(this).attr("id")+"'/>");
});
var imageChanger = setInterval(function() {switchImage()}, 500);
function switchImage() {
var new_image_url = [ 'http://foo.bar/anotherimg.jpg', 'http://bar.foo/image.jpg', 'http://foo.bar/imgremote.jpg'];
var random_div = Math.floor(Math.random() * $('div').length);
var random_img = Math.floor(Math.random() * $(new_image_url.length);
$("div:nth-child("+random_div+")").html('<img src="('+random_img+')" width="640">)');
}
});
</script>
请注意,远程图像不遵循任何常见模式,从而导致我的random_img
变量失效。
任何帮助都将不胜感激。
答案 0 :(得分:5)
要从数组中选择随机元素,可以使用:
var random_div = divs[Math.floor(Math.random() * divs.length)];
var random_img = new_image_url[Math.floor(Math.random() * new_image_url.length)];
这是一个稍微高效的代码版本:
function random_int(max) {
return Math.floor(Math.random() * max);
}
$(document).ready(function() {
var images = ['http://foo.bar/anotherimg.jpg', 'http://bar.foo/image.jpg', 'http://foo.bar/imgremote.jpg'];
var $divs = $('div');
$divs.each(function() {
$('<img />', {
src: 'http://foo.bar/img1.jpg',
alt: this.id
}).appendTo(this);
});
function switchImage() {
var $div = $divs.eq(random_int($divs.length));
var image = images[random_int(images.length)];
$div.find('img').attr('src', image);
}
var imageChanger = setInterval(switchImage, 500);
});