1
function smoothTransition(o,n)
{
    o.style.opacity = 0;
    o.src = n;
    var timer = setInterval(function(){
        if (o.style.opacity == 1){
            clearInterval(timer);
        }
        o.style.opacity += 0.01;
    }, 10);
}

ここで、o はオブジェクト (この場合は img) であり、n は現在のイメージを置き換える新しいイメージの名前です。しかし、このコードを実行すると、一度だけ実行され、新しい画像に 0.01 の不透明度が与えられてから停止します。何が原因でしょうか?

4

1 に答える 1

2

style.opacity数値ではなく文字列です。o.style.opacity += 0.1実際に実行すると、結果は有効'00.1'ですが、次の反復では になり00.10.1、そうではないため、不透明度は にリセットされ0ます。

style.opacityこれは、加算を行うときに数値にキャストすることで簡単に解決できます。

http://jsfiddle.net/TZ9Vd/1/

于 2013-02-27T00:43:44.680 に答える