2017-07-20 4 views
0

hoverイベントでバックグラウンド位置-xを変更する可能性のある小さな画像があります。そして、マウス放置を止めてください。しかし、setIntervalを使っても私のfuctuinは1回だけ実行されます。ここに私のコードです。誰か助けてくれますか?setInterval関数で要素を移動できません

let wave = document.querySelector('.wave'); 

wave.onmouseover = moveWave(); 

function moveWave() { 
    setInterval(function() { 
     wave.style.backgroundPositionX += 10 + 'px'; 
    }, 100) 
} 
+2

'wave.onmouseover = moveWave()は' 'wave.onmouseover = moveWave' –

答えて

0

問題は、以下の行である: wave.style.backgroundPositionX + = 10 + 'ピクセル'。

最初の呼び出しの後、wave.style.backgroundPositionXは次のようになります。 10pxの

次のコールの後、wave.style.backgroundPositionXは次のようになります。 10px10px - >間違ったフォーマットです。

正しい方法は次のとおりです。

var count = 10; 
let wave = document.querySelector('.wave'); 
wave.onmouseover = moveWave(); 

function moveWave() { 
    setInterval(function() { 
     count += 10; 
     wave.style.backgroundPositionX = count + 'px'; 
    }, 100) 
} 
+0

Tyのでなければならず、これは動作します。しかし、それはページが準備ができているときに機能します。また、ホバーイベントで作業する必要があります... –

+0

関数は、ホバーイベントで開始しますが、私はクリアできません。助けてください –

+0

var count = 10; let wave = document.querySelector( '。wave'); wave.onmouseover = moveWave(); wave.onmouseleave = moveLeave(); var id; 関数moveWave(){ ID =のsetInterval(関数(){ カウント+ = 10; wave.style.backgroundPositionX =カウント+ 'ピクセル'; }、100) }関数moveLeave(){ clearInterval(id); } –

0
var count = 10; 
let wave = document.querySelector('.wave'); 
wave.onmouseover = moveWave(); 
wave.onmouseleave = moveLeave(); 
var id; 

function moveWave() { 
    id = setInterval(function() { 
     count += 10; 
     wave.style.backgroundPositionX = count + 'px'; 
    }, 100) 
} 

function moveLeave() { 
    clearInterval(id); 
} 
関連する問題