从大数组中选择图像URL,在页面上插入随机DIV,循环

时间:2012-09-29 04:41:02

标签: javascript jquery

奇怪的请求。我有~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变量失效。

任何帮助都将不胜感激。

1 个答案:

答案 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);
});