2010-11-11 41 views
1

我想用jQuery实现幻灯片演示 我有一个叫做SlideShow的按钮,点击它会触发幻灯片放映。 我展示了一组缩略图:setInterval方法难题

<div class="pics"> 
<img u="bob" id="pic1" src="/photos/thumbs/file1.jpg" class="apt" f="file1.jpg"> 
<img u="rob" id="pic2" src="/photos/thumbs/file2.jpg" class="apt" f="file2.jpg"> 
<img u="job" id="pic3" src="/photos/thumbs/file3.jpg" class="apt" f="file3.jpg"> 
<img u="tom" id="pic4" src="/photos/thumbs/file4.jpg" class="apt" f="file4.jpg"> 
<img u="scott" id="pic5" src="/photos/thumbs/file5.jpg" class="apt" f="file5.jpg"> 
</div> 

你可以看到大拇指有类“易”,这将让我得到一套无不竖起大拇指的。 click事件处理程序只需要用setInterval(f,5000) 循环调用一个函数。这样我每5秒就读一个拇指的信息并从服务器加载完整的图像。

但是,无论我怎么做,我都会弄不明白。这里是代码:

var idx=''; 
    function SlideShow() { 
    idx = 1; //global variable to track index of current thumb inside <div> 
    setInterval("GetFullImage()",5000); 
    } 

    function GetFullImage(){ 
    var i = $('.apt:nth-child(' + idx + ')').attr("id"); 
    var u = $('.apt:nth-child(' + idx + ')').attr("u"); 
    var f = $('.apt:nth-child(' + idx + ')').attr("f"); 
    alert('i:=' + i + ' u:' + u + ' f:' + f); <-- always say i, u, f undefined after first time 
    idx++;   
    } 

什么是错?我没有用setInterval()调用玩过很多。

回答

1

你引用第n个孩子没有兄弟删除语音标记并括号。图像是彼此的兄弟姐妹,而不是下一个。我会把它提升到一个水平,然后使用第n个孩子。或只是抢:

$('.pics').children('img').length 

为阈值,则使用:

$('.pics img:eq('+idx+')') 

这样,你一直IDX正在增加,直到你已经达到了极限,然后重置计数器。

+0

我错过了这个。谢谢 – kheya 2010-11-11 18:22:00

0

试试这个,即从“GetFullImage()”

setInterval(GetFullImage,5000); 
+0

不是一个坏建议,但这与问题无关。 Projapati调用setInterval的方式是有效的。第一个参数可以是函数引用或代码字符串。 – InvisibleBacon 2010-11-11 16:36:31