2012-02-25 14 views
2

私はこれを学んだので、できるだけ明確に説明しようと思います。JavaScript clearIntervalは一度しか動作しませんか?

私はループする機能を持っています。私が達成したいのは、何かがループの上をぶら下がって停止してから、カーソルが離れるときに再び始まるときです。これは正しく動作しているようですが、私がマウスを動かすと、離してから再びマウスを動かすと、アニメーションはループし続けます。最悪の場合は、マウス入力/マウス出力を2回実行するとループ間隔が更新され、設定した時間内に2回ループします。

とにかく、これは私が働いている私のコードです:ホバーアウトで

var transition_delay = "3000"; 

function next_image(){ 
    var current_eq = $('ul#triggers li.current_trigger').index(); 

    if (current_eq == li_count) { //if this is the last image in the array 
     $triggers.removeClass("current_trigger").eq(0).addClass("current_trigger"); //removes current and adds it to next 
     $displays.fadeOut("slow").eq(0).fadeIn("slow"); //fades out then in next display 
    } 
    else { //if not last image 
     $triggers.removeClass("current_trigger").eq(current_eq + 1).addClass("current_trigger"); //removes current class and adds it to next 
     $displays.fadeOut("slow").eq(current_eq + 1).fadeIn("slow"); //fades out then next display in 
    } 
}; 

$triggers.hover(
    function(){ //in 
     console.log("clearing"); 
     clearInterval(next_image_interval); 
    }, 
    function(){ //out 
     console.log("starting"); 
     sliderIntervalID = setInterval(function(){next_image();},,transition_delay); 
}); 

next_image_interval = setInterval(function(){ 
next_image(); 
}, transition_delay); 
+0

ホバーアウトハンドラの二重カンマは何ですか( 'transition_delay'の直前)...? – cHao

+0

'sliderIntervalID = setInterval'は' next_image_interval'ですか? – Cheery

+1

ところで、 'function(){next_image();}'はここでは 'nextImage'と置き換えることができます(例:' setInterval(next_image、transition_delay); ')。 'function'ラップはたくさんのものを呼び出したり、スコープを拡張したりするのに適していますが、ここでは必要ありません(あなたがやっているのは一つの関数を呼び出すだけです)。 – cHao

答えて

2

、あなたはこれをやっている:

sliderIntervalID = setInterval(function(){next_image();},,transition_delay); 

ができますが、クリアされています

clearInterval(next_image_interval); 

sliderIntervalIDnext_image_intervalを変更すると、正常に動作するはずです。

+0

cHao:私の実際のコードではなく、ちょっとタイプミスです。私はそこにどのように入っているのか分かりません。 icyrock:それは完璧に働いた、ありがとう!私が何かをループしようとしたのはこれが初めてです。あなたは大きな助けになりました。 – user1220109

+0

確かに、助けてうれしい! –