0

私はJqueryを学び始めたばかりで、いくつかのチュートリアルを実行しましたが、イライラすることに、これは私が実行した中で最も基本的なものの1つであり、動作させることができないようです。

これは私がフォローしているチュートリアルです:-http://jonraasch.com/blog/a-simple-jquery-slideshow

ページを起動し、Chromeでdebugを実行し、firefoxでfirebugを実行すると、次のエラーが発生します。-「UncaughtReferenceError:slideSwitchisnotdefined

これは私のコードです:-

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

       $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 );
  });
});

私の知る限り、slideSwitch関数を正しく定義しましたが、コメントボックス内の他の誰もこの問題を抱えていません。私が間違っているのは本当に単純なことだと確信しています。

4

1 に答える 1

2

あなたのslideSwitch関数はグローバルスコープで定義されていません(そのハドラー内のみ)。文字列をそこに.ready()渡すときは、代わりに次のようにします:setInterval()

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

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

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

記録のために、これはまだ機能します(親スコープにあるため、どこにでもあります):

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

しかし...あなたはすでにdocument.readyハンドラーにいるので、ここではラッパーは必要ありません。

于 2010-11-09T13:40:15.020 に答える