jfiddler - http://jsfiddle.net/x2UWG/

Więc mam funkcję zanikania, które najpierw zanika obraz, a następnie zniknie. Chciałbym, żeby obraz mógł się zniknąć, zmienić, a następnie zniknąć. Problemem jest jedyny sposób, w jaki mogę uzyskać IMG, aby zniknąć, jest to, że mam go w takim guziku.

<button class="hide2" onclick="fadeEffect.init('chestImg', 0)">Fade Out</div>

Chciałbym, żeby to był coś takiego

Img to pokaz

Użytkownik kliknie jeden przycisk

Obraz znika, a następnie zmienia się.

Obraz zniknie.

W tej chwili jest to takie.

Img to pokaz

Użytkownik kliknie jeden przycisk

Obraz znika, a następnie zmienia się.

Użytkownik kliknie inny przycisk

Obraz zniknie.

Moja funkcja zanika wygląda tak.

var fadeEffect=function(){
return{
    init:function(id, flag, target){
        this.elem = document.getElementById(id);
        clearInterval(this.elem.si);
        this.target = target ? target : flag ? 100 : 0;
        this.flag = flag || -1;
        this.alpha = this.elem.style.opacity ? parseFloat(this.elem.style.opacity) * 100 : 0;
        this.elem.si = setInterval(function(){fadeEffect.tween()}, 20);
    },
    tween:function(){
        if(this.alpha == this.target){
            clearInterval(this.elem.si);
        }else{
            var value = Math.round(this.alpha + ((this.target - this.alpha) * .05)) + (1 * this.flag);
            this.elem.style.opacity = value / 100;
            this.elem.style.filter = 'alpha(opacity=' + value + ')';
            this.alpha = value
        }
    }
}
}();

Nazywam mianem

fadeEffect.init('chestImg', 1);

I fade

fadeEffect.init('chestImg', 0);

Ale jeśli umieściłem je w tej samej funkcji, nie będzie działać. Jakaś pomoc?

0
user2612619 7 grudzień 2013, 07:43

2 odpowiedzi

Najlepsza odpowiedź

Gdy zadzwonisz zarówno fadeEffect.init('chestImg', 1);, jak i fadeEffect.init('chestImg', 0); w tej samej funkcji, oba efekty pracują jednocześnie, co myślę, co myślę do twojego problemu. Myślę, że to, co musisz zrobić, to:

fadeEffect.init('chestImg', 1);
setTimeout(function(){fadeEffect.init('chestImg', 0);},20);
3
hkk 7 grudzień 2013, 03:49

Wierzę, że twój problem jest z wiązaniem {x0}}. Gdy funkcja jest wywoływana z ClickHandler o przycisku, this jest ustawiona na węzeł przycisku. Możesz ręcznie ustawić obiekt this za pomocą funkcji call

var button = document.getElementById('hide-id');

fadeEffect.init.call(button,'chestImg', 0);

Dlaczego pisanie ".Call (to)" na końcu funkcji anonimowej JavaScript?

0
Community 23 maj 2017, 11:49