带有动态数组的Jquery setInterval

时间:2013-10-12 19:44:22

标签: jquery arrays setinterval

这是我在这里的第一篇文章,所以我不确定我的帖子标题或这篇文章的其余内容是广泛还是含糊。

这是我解决问题的第一站点。但现在我被困住了。我设法从我在这个网站上找到的一些代码组合了一个jquery图像幻灯片放映(不是一个插件)。我在这里和那里做了一些修改,并添加了几个输入字段。 这是一个jsfiddle http://jsfiddle.net/8BRzr/48/,我的问题已被评论。

我相信我的问题在于jquery代码的setInterval部分

$(function(){
    $('#addimage').click(function(){
    if($( "#addimagefield" ).val().trim().length !='' && $( "#image1" ).val().trim().length ==''){
        $( "#image1" ).val( $("#addimagefield").val().trim() );
        $( "#addimagefield" ).val( '' );
    } if($( "#addimagefield" ).val().trim().length !='' && $( "#image2" ).val().trim().length ==''){
        $( "#image2" ).val( $("#addimagefield").val().trim() );
        $( "#addimagefield" ).val( '' );
    } if($( "#addimagefield" ).val().trim().length !='' && $( "#image3" ).val().trim().length ==''){
        $( "#image3" ).val( $("#addimagefield").val().trim() );
        $( "#addimagefield" ).val( '' );
    } if($( "#addimagefield" ).val().trim().length !='' && $( "#image4" ).val().trim().length ==''){
        $( "#image4" ).val( $("#addimagefield").val().trim() );
        $( "#addimagefield" ).val( '' );
    } if($( "#addimagefield" ).val().trim().length !='' && $( "#image5" ).val().trim().length ==''){
        $( "#image5" ).val( $("#addimagefield").val().trim() );
        $( "#addimagefield" ).val( '' );
    }
    image1 = $('#image1').val();
    image2 = $('#image2').val();
    image3 = $('#image3').val();
    image4 = $('#image4').val();
    image5 = $('#image5').val();

var arr = [ image1,image2,image3,image4,image5 ];
var images = $.grep( arr, function( n, i ) {
  return n != '';
});
var cur_image = 0;
function changeBackground() {
    cur_image++;
    if ( cur_image >= images.length )
        cur_image = 0;

    // change images
    $( '.featuredImages' ).css({
        backgroundImage: 'url(' + images[ cur_image ] + ')'
    });
    $( '.featuredImages .slide' ).fadeIn( 2000, function(){
        $( this ).css({
            backgroundImage: 'url(' + images[ cur_image ] + ')'
        }).show();
    } );

};
setInterval( changeBackground, 6000 );
});
});

在搜索时我遇到了settimeout()函数,这看起来像我需要但我不知道在哪里/如何实现它。

感谢任何和所有帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

问题是您已在事件处理程序中为单击声明了changeBackground函数,因此它仅在该范围内可用。当你试图在外面使用它时,它是未定义的。

将该函数移出事件处理程序,并在该范围之外声明imagecur_image变量,因为函数使用它们:

http://jsfiddle.net/8BRzr/49/