-4

こんにちは。まず、コーディングや関連する簡単な質問についてはわかりません。このコードにスライドを自動起動するように指示する簡単な方法はありますか?現時点では、クリックすると画像が変化します。現在、インデックスページには画像が1つしかないので、いくつか追加する必要がありますが、クリックして次の画像を表示する必要はありません。インデックスのコードは次のとおりです。

<script type="text/javascript">
//<![CDATA[
    /*
    the images preload plugin
    */
    (function($) {
        $.fn.preload = function(options) {
            var opts    = $.extend({}, $.fn.preload.defaults, options),
                o       = $.meta ? $.extend({}, opts, this.data()) : opts;
            var c       = this.length,
                l       = 0;
            return this.each(function() {
                var $i  = $(this);
                $('<img/>').load(function(i){
                    ++l;
                    if(l == c) o.onComplete();
                }).attr('src',$i.attr('src'));  
            });
        };
        $.fn.preload.defaults = {
            onComplete  : function(){return false;}
        };
    })(jQuery);
//]]>
</script><script type="text/javascript">
//<![CDATA[
    $(function() {
        var $tf_bg              = $('#tf_bg'),
            $tf_bg_images       = $tf_bg.find('img'),
            $tf_bg_img          = $tf_bg_images.eq(0),
            $tf_thumbs          = $('#tf_thumbs'),
            total               = $tf_bg_images.length,
            current             = 0,
            $tf_content_wrapper = $('#tf_content_wrapper'),
            $tf_next            = $('#tf_next'),
            $tf_prev            = $('#tf_prev'),
            $tf_loading         = $('#tf_loading');

        //preload the images                
        $tf_bg_images.preload({
            onComplete  : function(){
                $tf_loading.hide();
                init();
            }
        });

        //shows the first image and initializes events
        function init(){
            //get dimentions for the image, based on the windows size
            var dim = getImageDim($tf_bg_img);
            //set the returned values and show the image
            $tf_bg_img.css({
                width   : dim.width,
                height  : dim.height,
                left    : dim.left,
                top     : dim.top
            }).fadeIn();

            //resizing the window resizes the $tf_bg_img
            $(window).bind('resize',function(){
                var dim = getImageDim($tf_bg_img);
                $tf_bg_img.css({
                    width   : dim.width,
                    height  : dim.height,
                    left    : dim.left,
                    top     : dim.top
                });
            });

            //expand and fit the image to the screen
            $('#tf_zoom').live('click',
                function(){
                    if($tf_bg_img.is(':animated'))
                        return false;

                    var $this   = $(this);
                    if($this.hasClass('tf_zoom')){
                        resize($tf_bg_img);
                        $this.addClass('tf_fullscreen')
                             .removeClass('tf_zoom');
                    }
                    else{
                        var dim = getImageDim($tf_bg_img);
                        $tf_bg_img.animate({
                            width   : dim.width,
                            height  : dim.height,
                            top     : dim.top,
                            left    : dim.left
                        },350);
                        $this.addClass('tf_zoom')
                             .removeClass('tf_fullscreen'); 
                    }
                }
            );

            //click the arrow down, scrolls down
            $tf_next.bind('click',function(){
                if($tf_bg_img.is(':animated'))
                    return false;
                    scroll('tb');
            });

            //click the arrow up, scrolls up
            $tf_prev.bind('click',function(){
                if($tf_bg_img.is(':animated'))
                    return false;
                scroll('bt');
            });

            //mousewheel events - down / up button trigger the scroll down / up
            $(document).mousewheel(function(e, delta) {
                if($tf_bg_img.is(':animated'))
                    return false;

                if(delta > 0)
                    scroll('bt');
                else
                    scroll('tb');
                return false;
            });

            //key events - down / up button trigger the scroll down / up
            $(document).keydown(function(e){
                if($tf_bg_img.is(':animated'))
                    return false;

                switch(e.which){
                    case 38:    
                        scroll('bt');
                        break;  
                    case 40:    
                        scroll('tb');
                        break;
                }
            });
        }

        //show next / prev image
        function scroll(dir){
            //if dir is "tb" (top -> bottom) increment current, 
            //else if "bt" decrement it
            current = (dir == 'tb')?current + 1:current - 1;

            //we want a circular slideshow, 
            //so we need to check the limits of current
            if(current == total) current = 0;
            else if(current < 0) current = total - 1;

            //flip the thumb
            $tf_thumbs.flip({
                direction   : dir,
                speed       : 400,
                onBefore    : function(){
                    //the new thumb is set here
                    var content = '<span id="tf_zoom" class="tf_zoom"><\/span>';
                    content     +='<img src="' +           $tf_bg_images.eq(current).attr('longdesc') + '" alt="Thumb' + (current+1) + '"/>';
                    $tf_thumbs.html(content);
                }
            });

            //we get the next image
            var $tf_bg_img_next = $tf_bg_images.eq(current),
                //its dimentions
                dim             = getImageDim($tf_bg_img_next),
                //the top should be one that makes the image out of the viewport
                //the image should be positioned up or down depending on the direction
                    top = (dir == 'tb')?$(window).height() + 'px':-parseFloat(dim.height,10) + 'px';

            //set the returned values and show the next image   
                $tf_bg_img_next.css({
                    width   : dim.width,
                    height  : dim.height,
                    left    : dim.left,
                    top     : top
                }).show();

            //now slide it to the viewport
                $tf_bg_img_next.stop().animate({
                    top     : dim.top
                },700);

            //we want the old image to slide in the same direction, out of the viewport
                var slideTo = (dir == 'tb')?-$tf_bg_img.height() + 'px':$(window).height() + 'px';
                $tf_bg_img.stop().animate({
                    top     : slideTo
                },700,function(){
                //hide it
                    $(this).hide();
                //the $tf_bg_img is now the shown image
                    $tf_bg_img  = $tf_bg_img_next;
                //show the description for the new image
                    $tf_content_wrapper.children()
                                       .eq(current)
                                       .show();
            });
                //hide the current description  
                    $tf_content_wrapper.children(':visible')
                                       .hide()

            }

            //animate the image to fit in the viewport
            function resize($img){
                var w_w = $(window).width(),
                    w_h = $(window).height(),
                    i_w = $img.width(),
                    i_h = $img.height(),
                    r_i = i_h / i_w,
                    new_w,new_h;

                if(i_w > i_h){
                    new_w   = w_w;
                    new_h   = w_w * r_i;

                    if(new_h > w_h){
                        new_h   = w_h;
                        new_w   = w_h / r_i;
                    }
                }   
                else{
                    new_h   = w_w * r_i;
                    new_w   = w_w;
                }

                $img.animate({
                    width   : new_w + 'px',
                    height  : new_h + 'px',
                    top     : '0px',
                    left    : '0px'
                },350);
            }

            //get dimentions of the image, 
            //in order to make it full size and centered
            function getImageDim($img){
                var w_w = $(window).width(),
                    w_h = $(window).height(),
                    r_w = w_h / w_w,
                    i_w = $img.width(),
                    i_h = $img.height(),
                    r_i = i_h / i_w,
                    new_w,new_h,
                    new_left,new_top;

                if(r_w > r_i){
                    new_h   = w_h;
                    new_w   = w_h / r_i;
                }
                else{
                    new_h   = w_w * r_i;
                    new_w   = w_w;
                }


                return {
                    width   : new_w + 'px',
                    height  : new_h + 'px',
                    left    : (w_w - new_w) / 2 + 'px',
                    top     : (w_h - new_h) / 2 + 'px'
                };
                }
        });
//]]>
</script>
4

4 に答える 4

2

簡単なものはありますか...

いいえ :)

setTimeout()関数を見てみましょう。多分これが役立つかもしれません:

于 2012-05-31T22:19:31.180 に答える
0

次のように、 setIntervalとともに次の矢印クリックイベントをハイジャックできます。

setInterval(function(){
    $tf_next.trigger('click');
}, 2500); // Change 2500 to whatever miliseconds delay you want

幸運を!

于 2012-05-31T22:37:05.243 に答える
0

簡単な方法は、 a を設定してsetTimeout()、「マウスクリック」を処理する関数を実行させることです。

ページの読み込みが完了したら、次の行を起動できます。

var timer = setTimeout(function(){
    scroll(tb);
}, 2000);

2秒後に画像が変わります。

継続したい場合は、次のようにすることができます。

//Fire this after page has finished loading
var timer = setTimeout(function(){
    autoChange("tb", 2000);
}, 2000);

//Put this somewhere else
function autoChange(dir, timeout){
    scroll(dir);
    var timer = setTimeout(function(){
        autoChange("tb", 2000);
    }, timeout);
}

これにより、2 秒ごとに画像が変わります。ユーザーがクリックして画像を変更すると、タイムアウトをたとえば 5 秒に変更してから、2 秒ごとに再び自動スクロールを開始できます。

W3Schoolsで読んsetTimeout()でください。

于 2012-05-31T22:31:49.970 に答える
0

表示されるまでこのコードを下にスクロールしますMY ANSWER!!!!!!!!

編集: 更新されたコードをいくつか貼り付けました。これをもう一度試してください。

<script type="text/javascript">
//<![CDATA[
    /*
    the images preload plugin
    */
    (function($) {
        $.fn.preload = function(options) {
            var opts    = $.extend({}, $.fn.preload.defaults, options),
                o       = $.meta ? $.extend({}, opts, this.data()) : opts;
            var c       = this.length,
                l       = 0;
            return this.each(function() {
                var $i  = $(this);
                $('<img/>').load(function(i){
                    ++l;
                    if(l == c) o.onComplete();
                }).attr('src',$i.attr('src'));  
            });
        };
        $.fn.preload.defaults = {
            onComplete  : function(){return false;}
        };
    })(jQuery);
//]]>
</script><script type="text/javascript">
//<![CDATA[
    $(function() {
        var $tf_bg              = $('#tf_bg'),
            $tf_bg_images       = $tf_bg.find('img'),
            $tf_bg_img          = $tf_bg_images.eq(0),
            $tf_thumbs          = $('#tf_thumbs'),
            total               = $tf_bg_images.length,
            current             = 0,
            $tf_content_wrapper = $('#tf_content_wrapper'),
            $tf_next            = $('#tf_next'),
            $tf_prev            = $('#tf_prev'),
            $tf_loading         = $('#tf_loading');


        //preload the images                
        $tf_bg_images.preload({
            onComplete  : function(){
                $tf_loading.hide();
                init();
            }
        });


        //shows the first image and initializes events
        function init(){
            //get dimentions for the image, based on the windows size
            var dim = getImageDim($tf_bg_img);
            //set the returned values and show the image
            $tf_bg_img.css({
                width   : dim.width,
                height  : dim.height,
                left    : dim.left,
                top     : dim.top
            }).fadeIn();

            //resizing the window resizes the $tf_bg_img
            $(window).bind('resize',function(){
                var dim = getImageDim($tf_bg_img);
                $tf_bg_img.css({
                    width   : dim.width,
                    height  : dim.height,
                    left    : dim.left,
                    top     : dim.top
                });
            });

            // MY ANSWER!!!!!!!!!!
            // Click next every 5000 ms (5 sec). 
            setInterval(function(){
                $tf_next.click();
            }, 5000);
        }

        //expand and fit the image to the screen
        $('#tf_zoom').live('click', function(){
            if($tf_bg_img.is(':animated'))
                return false;

            var $this   = $(this);
            if($this.hasClass('tf_zoom')){
                resize($tf_bg_img);
                $this.addClass('tf_fullscreen')
                     .removeClass('tf_zoom');
            }
            else{
                var dim = getImageDim($tf_bg_img);
                $tf_bg_img.animate({
                    width   : dim.width,
                    height  : dim.height,
                    top     : dim.top,
                    left    : dim.left
                },350);
                $this.addClass('tf_zoom')
                     .removeClass('tf_fullscreen'); 
            }
        });

        //click the arrow down, scrolls down
        $tf_next.bind('click',function(){
            if($tf_bg_img.is(':animated'))
                return false;
            scroll('tb');
        });

        //click the arrow up, scrolls up
        $tf_prev.bind('click',function(){
            if($tf_bg_img.is(':animated'))
                return false;
            scroll('bt');
        });

        //mousewheel events - down / up button trigger the scroll down / up
        $(document).mousewheel(function(e, delta) {
            if($tf_bg_img.is(':animated'))
                return false;

            if(delta > 0)
                scroll('bt');
            else
                scroll('tb');
            return false;
        });

        //key events - down / up button trigger the scroll down / up
        $(document).keydown(function(e){
            if($tf_bg_img.is(':animated'))
                return false;

            switch(e.which){
                case 38:    
                    scroll('bt');
                    break;  

                case 40:    
                    scroll('tb');
                    break;
            }
        });


            //show next / prev image
        function scroll(dir){
            //if dir is "tb" (top -> bottom) increment current, 
            //else if "bt" decrement it
            current = (dir == 'tb')?current + 1:current - 1;

            //we want a circular slideshow, 
            //so we need to check the limits of current
            if(current == total) current = 0;
            else if(current < 0) current = total - 1;

            //flip the thumb
            $tf_thumbs.flip({
                direction   : dir,
                speed       : 400,
                onBefore    : function(){
                    //the new thumb is set here
                    var content = '<span id="tf_zoom" class="tf_zoom"><\/span>';
                    content     +='<img src="' + $tf_bg_images.eq(current).attr('longdesc') + '" alt="Thumb' + (current+1) + '"/>';
                    $tf_thumbs.html(content);
                }
            });

            //we get the next image
            var $tf_bg_img_next = $tf_bg_images.eq(current),
                //its dimentions
                dim             = getImageDim($tf_bg_img_next),
                //the top should be one that makes the image out of the viewport
                //the image should be positioned up or down depending on the direction
                top = (dir == 'tb')?$(window).height() + 'px':-parseFloat(dim.height,10) + 'px';

            //set the returned values and show the next image   
            $tf_bg_img_next.css({
                width   : dim.width,
                height  : dim.height,
                left    : dim.left,
                top     : top
            }).show();

            //now slide it to the viewport
            $tf_bg_img_next.stop().animate({
                top     : dim.top
            },700);

            //we want the old image to slide in the same direction, out of the viewport
            var slideTo = (dir == 'tb')?-$tf_bg_img.height() + 'px':$(window).height() + 'px';
            $tf_bg_img.stop().animate({
                    top     : slideTo
                },700,function(){
                //hide it
                    $(this).hide();
                //the $tf_bg_img is now the shown image
                    $tf_bg_img  = $tf_bg_img_next;
                //show the description for the new image
                    $tf_content_wrapper.children()
                                       .eq(current)
                                       .show();
            });
            //hide the current description  
                $tf_content_wrapper.children(':visible')
                                   .hide()

        }

        //animate the image to fit in the viewport
        function resize($img){
            var w_w = $(window).width(),
                w_h = $(window).height(),
                i_w = $img.width(),
                i_h = $img.height(),
                r_i = i_h / i_w,
                new_w,new_h;

            if(i_w > i_h){
                new_w   = w_w;
                new_h   = w_w * r_i;

                if(new_h > w_h){
                    new_h   = w_h;
                    new_w   = w_h / r_i;
                }
            }   
            else{
                new_h   = w_w * r_i;
                new_w   = w_w;
            }

            $img.animate({
                width   : new_w + 'px',
                height  : new_h + 'px',
                top     : '0px',
                left    : '0px'
            },350);
        }

        //get dimentions of the image, 
        //in order to make it full size and centered
        function getImageDim($img){
            var w_w = $(window).width(),
                w_h = $(window).height(),
                r_w = w_h / w_w,
                i_w = $img.width(),
                i_h = $img.height(),
                r_i = i_h / i_w,
                new_w,new_h,
                new_left,new_top;

            if(r_w > r_i){
                new_h   = w_h;
                new_w   = w_h / r_i;
            }
            else{
                new_h   = w_w * r_i;
                new_w   = w_w;
            }


            return {
                width   : new_w + 'px',
                height  : new_h + 'px',
                left    : (w_w - new_w) / 2 + 'px',
                top     : (w_h - new_h) / 2 + 'px'
            };
        }
    });​
//]]>
</script>
于 2012-05-31T22:32:10.970 に答える