マウスを上にいくとフェードアウトし、マウスがフェードインするスクリプトを作った。それは 'mouseover'イベントでうまく動作しますが、 'mouseout'のアイデアで失敗しますか?フェード機能のトラブル
P.S. jqueryを使用していないのは、私が教育目的でこれを学びたいからです。
コードを表示するには、ここをクリックhttp://jsfiddle.net/assuredlonewolf/t2sYX/ 気軽に編集してください!
マウスを上にいくとフェードアウトし、マウスがフェードインするスクリプトを作った。それは 'mouseover'イベントでうまく動作しますが、 'mouseout'のアイデアで失敗しますか?フェード機能のトラブル
P.S. jqueryを使用していないのは、私が教育目的でこれを学びたいからです。
コードを表示するには、ここをクリックhttp://jsfiddle.net/assuredlonewolf/t2sYX/ 気軽に編集してください!
次の2つの問題を持っている:
< 1.1
を使用している
fade
数ながら、 1.1から始める。明らかに、1.1は1.1より低くなることはありません。 var interval; // Declare a variable to hold the timer OUTSIDE the function,
// so that all event listeners can work with ONE interval
function fade(elem, speed, mode) {
var count = 0;
var fade = 1.0;
clearInterval(interval); // Clear interval, to prevent having multiple
// running intervals
if (mode === true && count == 0) {
count = 1;
interval = setInterval(function() {
fade = fade - .1;
if(fade > -.1) document.getElementById(elem).style.opacity = fade;
}, speed)
} else {
count = 0;
interval = setInterval(function() {
fade = fade + .1;
// Updated code below: Replaced < with <=
if(fade <= 1.1) document.getElementById(elem).style.opacity = fade;
}, speed)
}
}
その他のヒント:
Updated code、あなたがそれを実装するトラブルを抱えている場合は、ヘルプを気軽に
document.getElementById(elem)
を変数にインターバル機能の外に、(しかし、内部はfunction fade
で、パフォーマンス上の理由からです。varibaleのルックアップは、関数呼び出しよりも安価です。まず、インターバルタイマーを止めることはありません。それが始まると、それは永遠に続きます。間隔を設定することからの戻り値を保存し、フェードが終了したらclearIntervalでタイマーを停止する必要があります。
ありがとうございました。追加情報ありがとうございました –
Huh。私の編集は消えた。とにかく、 'if(fade ...)'ブロックで間隔をクリアしてフェーダーが不要になったときにフェーダーが止まるのを防ぐ必要があります。 –
スカイプまたはメールをお持ちですか –