2016-08-26 7 views
-2

Ich benutze setInterval mit jQuery, um die Position eines Hintergrundbilds onLoad zu ändern, aber ich möchte es als Funktion verwenden, damit ich clearInterval aufrufen kann, wenn ein Element angeklickt wird und um die Funktion erneut aufzurufen, wenn auf ein anderes Element geklickt wird, aber panRight() nicht unter Last arbeitet.Verwendung von setInterval und clearInterval als Funktionen

function moveImage() { 
var x = 0; 
    x-=1; 
    $('.bg-img').css('background-position-x', x + 'px'); 
} 

function panRight(){ 
    setInterval(moveImage(),25); 
} 

// moveImage onLoad 
panRight(); 

$("#stop-animation").click(function(){ 
    clearInterval(panRight); 
}); 

$("#start-animation").click(function(){ 
    panRight(); 
}); 

Der folgende Code funktioniert wie beabsichtigt onLoad und ist das, was ich versuche, wie Funktionen Refactoring.

$(function(){ 
    var x = 0; 
    setInterval(function(){ 
     x-=1; 
     $('.bg-img').css('background-position', x + 'px 0'); 
    }, 25); 
}) 
+2

'var panRight = setInterval löschen (moveImage, 25); ', not' Funktion panRight() {setInterval (moveImage(), 25);} '. – Xufox

+0

Wenn Sie auf die Tags für setInterval und/oder clearInterval klicken, werden Fragen mit diesen Tags angezeigt. Wenn Sie auf "Weitere Informationen" klicken, wird das Tag-Wiki angezeigt, das Informationen zur Verwendung der Funktionen enthält, einschließlich Links zur Dokumentation. –

+0

Danke. Das wusste ich nicht. – Fettabachi

Antwort

-1

Sie können es wie folgt tun:

function moveImage() { 
var x = 0; 
    x-=1; 
    $('.bg-img').css('background-position-x', x + 'px'); 
} 

var panInterval; //timer id 

function panRight(){ 
    panInterval = setInterval(moveImage,25); 
} 

// moveImage onLoad 
panRight(); 

$("#stop-animation").click(function(){ 
    clearInterval(panInterval); 
}); 

$("#start-animation").click(function(){ 
    panRight(); 
}); 

Hier var panInterval ist Timer-ID, die zurückgegeben bekommen, wenn wir setInterval nennen und welche nützlich sein können, um das Intervall

+0

Entschuldigung @Xufox ...! – vijayP

+0

Sehr schön! Außerdem deklariere ich x außerhalb der Funktion. – Fettabachi

Verwandte Themen