0

http://jonraasch.com/blog/a-simple-jquery-slideshowのコードを使用

私はjsfiddleを作成しました。

問題は、スライドショーがjsfiddleで機能しないため、ニーズに合わせて調整できないことです

誰が問題が何であるかを見てください

http://jsfiddle.net/UUKP4/8/

コード

  function slideSwitch() {
            var $active = $('#slideshow IMG.active');

            if ( $active.length == 0 ) $active = $('#slideshow IMG:last');

            // use this to pull the images in the order they appear in the markup
            var $next =  $active.next().length ? $active.next()
                : $('#slideshow IMG:first');

            $active.addClass('last-active');

            $next.css({opacity: 0.0})
                .addClass('active')
                .animate({opacity: 1.0}, 1000, function() {
                    $active.removeClass('active last-active');
                });
        }

        $(function() {
            setInterval( "slideSwitch()", 5000 );
        });

        </script>

        <style type="text/css">

        /*** set the width and height to match your images **/

        #slideshow {
            position:relative;
            height:350px;
        }

        #slideshow IMG {
            position:absolute;
            top:0;
            left:0;
            z-index:8;
            opacity:0.0;
        }

        #slideshow IMG.active {
            z-index:10;
            opacity:1.0;
        }

        #slideshow IMG.last-active {
            z-index:9;
        }

        </style>


        <div id="slideshow">
          <img src="http://jonraasch.com/img/slideshow/simple-jquery-slideshow.png" alt="Slideshow Image 1" class="active" />
          <img src="http://jonraasch.com/img/slideshow/mini-golf-ball.jpg" alt="Slideshow Image 2" />
          <img src="http://jonraasch.com/img/slideshow/jon-raasch.jpg" alt="Slideshow Image 3" />
          <img src="http://jonraasch.com/img/slideshow/ear-cleaning.jpg" alt="Slideshow Image 4" />
    </div>
4

2 に答える 2

3

コードに問題がありました。setIntervalに送信したハンドラーに余分な括弧がありました。

ハンドラーを関数に送るとき、括弧は書きません。They が書かれている場合、実際には関数 ( slideSwitch()) が呼び出され、その戻り値が関数 ( ) に送られますsetInterval

$(function () {
    setInterval(slideSwitch, 5000); // Not slideSwitch()
});

今、それは働いています

jsFiddle デモ

于 2013-08-22T11:27:29.640 に答える
2

から括弧を削除しますsetInterval:

setInterval(slideSwitch, 5000);

の最初のパラメーターはsetInterval、ミリ秒ごとに実行される関数を探します。関数を参照するのではなく、呼び出しています。あなたの例では、実際には最初のパラメーターで関数を呼び出しています (スクリプトが読み込まれるとすぐに)。関数が返さnullれるため、JavaScript エラーは発生せず、単にnull5000 ミリ秒ごとに実行されると思います。

于 2013-08-22T11:27:02.723 に答える