2011-10-11 49 views
-1

在这里我有一些代码是我的幻灯片,我想知道的是你是否可以随机化图像,因此它不会在刷新时在同一图像上启动这一页。这是可能使这段代码随机化幻灯片的图像

请给我提供有用的信息,如果你想让我觉得自由。

THNAKS GUYS! :)

<html> 
<head> 
<title>JQuery Cycle Plugin Sample</title> 
<link rel="stylesheet" type="text/css" media="screen" href="../screen.css" /> 
<script type="text/javascript" src="../js2/jquery-1.3.js"></script> 
<script type="text/javascript" src="../js2/jquery.cycle.all.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#myslides').cycle({ 
      fx: 'fade', 
      speed: 2000, 
      timeout: 2000 
     }); 
    }); 
</script> 
</head> 
<body> 
<div id="myslides"> 
    <img src="../images/capitol.jpg" /> 
    <img src="../images/flowers.jpg" /> 
    <img src="../images/countryscene.jpg" /> 
    <img src="../images/heartkush.jpg"/> 
</div> 
</body> 
</html> 
+0

如果可能的话你能不能也让我知道如何改进,以便在问题跨更好,如果它需要得到人们这一点。 :) – chris

+0

我刚刚为这个问题添加了正确的答案... –

回答

-1

你可能想保持图像的URL中的变量(或从div检索它们并清除div之后),说

var images = ['x.jpg', 'y.jpg', 'z.jpg']; 

(甚至更好的 - 做一些预加载)。然后做一个随机排序

function randomOrd(a,b) 
{ 
    return (Math.round(Math.random())-0.5); 
} 
images.sort(randomOrd); 

然后动态地添加图片

for (var i in images) 
{ 
    $('#myslides').append('<img src="'+images[i]+'" />'); 
} 

,然后做幻灯片。最终脚本可能如下所示:

<script> 
    function randOrd(a,b) 
    { 
     return (Math.round(Math.random())-0.5); 
    } 
    $(document).ready(function(){ 
     var images = []; 
     /* retrieve images */ 
     $('div#myslides img').each(function(){ 
      images.push($(this)); 
     }); 
     /* clear the div */ 
     $('div#myslides').empty(); 
     /* do the random sort of images */ 
     images.sort(randOrd); 
     /* append to the div sorted images */ 
     for (var i in images) 
     { 
      $('div#myslides').append(images[i]); 
     } 
     /* do the slideshow */ 
     $('#myslides').cycle({ 
      fx: 'fade', 
      speed: 2000, 
      timeout: 2000 
     }); 
    }); 
</script> 
+0

什么也没有。我帖子底部的脚本会为你做所有事情。 :) – freakish

+0

非常感谢你的帮助它真的很感谢:) – chris

-1
$("#myslides img").each(function() { 
     if (Math.random() >= 0.5) { $("#myslides").append($(this)); } 
}); 
+0

此代码将复制图像。此外,它不会更改图像的起始列表。 – freakish

+0

你错了。追加不会重复项目。它确实会改变图像的顺序。试试看。 –

+0

你是对的。追加不会重复项目。但是在这种情况下,这段代码什么都不做(一分钟前试过)。它怎么可能?你试图添加已经在div中的元素吗? – freakish

-1

这只是jQuery循环所具有的许多options之一。

添加random: true的选项,如下所示:

$(document).ready(function(){ 
    $('#myslides').cycle({ 
     fx: 'fade', 
     speed: 2000, 
     timeout: 2000, 
     random: true 
    }); 
});