2016-08-17 4 views
0

私はjQueryを使用できないため、機能しないため、なぜFadeInとFadeOutという2つの関数を作成しました。徐々に不透明度を0または1に設定します。これはコード:'FadeIn'と 'FadeOut'が機能しません

function fadeIn(el){ 
    var val = 0; 
    document.getElementById(el).style.opacity = val; 
    function fade(){ 
     val += .1; 
     document.getElementById(el).style.opacity = val; 
     if (val < 1){ 
      setTimeout(fade(), 90); 
     } 
    } 
    fade(); 
} 

function fadeOut(el){ 
    var val = 1; 
    document.getElementById(el).style.opacity = val; 
    function fade(){ 
     val -= .1; 
     document.getElementById(el).style.opacity = val; 
     if (val > 0){ 
      setTimeout(fade(), 90); 
     } 
    } 
    fade(); 
} 
+2

[純粋なJavaScriptのフェードイン機能]の複製があります。(0120-328338/pure-javascript-fade-in-function) – laaposto

+0

おそらく 'style.opacity'は文字列として報告されますが、だから、最初にそれを解析して数学をする必要があります。さらに、純粋なCSSフェードを呼び出すクラスを追加/削除しないのはなぜですか? – Utkanos

答えて

0

あなたは非常に近くでした。最初の引数としてfadeの代わりにfade()を指定すると、その関数が呼び出され、setTimeout()は何もしません。これはうまくいくはずです:

function fadeIn(el){ 
    var val = 0; 
    document.getElementById(el).style.opacity = val; 
    function fade(){ 
     val += .1; 
     document.getElementById(el).style.opacity = val; 
     if (val < 1){ 
      setTimeout(fade, 90); // A Small fix to your code 
     } 
    } 
    fade(); 
} 

​​も同様に固定されます。

関連する問題