自我调用函数调用

时间:2016-09-14 11:31:27

标签: javascript jquery

自调用函数调用重复但功能代码有问题重复功能输出。

的Javascript

//version 2
 ! function anf1(){
 if(w0 = '0') { //always true will be executed
    $('.fish1').stop().animate({'margin-left': w50, 'margin-top': '30px' }, 25000); //move object to the center of screen
    console.log('start');
}
if(w50 = w50) { //always true will be executed after 1st if condition
    $('.fish1').stop().animate({'margin-left': w70, 'margin-top': '-30px'}, 9000); //move object to 70% of browser width
    console.log('middle')
}
if(w70 = w70) { //always true will be executed after the 2nd if condition
    $('.fish1').stop().animate({'margin-left': ww, 'margin-top': '-45px'}, 35000, function(){
     anf1(); // call self invoked function anf1
     }); //move object to 100% of browser width
    console.log('finish')
}
}();

HTML

JSfiddle link https://jsfiddle.net/qytkg5h2/2/

1 个答案:

答案 0 :(得分:1)

使用==进行比较=用于分配。在再次调用函数之前,还要将原始css设置为最终动画。<​​/ p>

//window 100%
var ww = $('.container').outerWidth();
//window 0%
var w0 = ww - ww;
//window 50%
var w50 = ww / 2;
//window 70%
var w70 = (70 / 100) * ww;


//version 1
 ! function anf1(){
 if(w0 == '0') { //always true will be executed
    $('.fish1').stop().animate({'margin-left': w50, 'margin-top': '30px' }, 2500); //move object to the center of screen

    console.log('start');
}
if(w50 == w50) { //always true will be executed after 1st if condition
    $('.fish1').stop().animate({'margin-left': w70, 'margin-top': '-30px'}, 900); //move object to 70% of browser width
    console.log('middle')

}
if(w70 == w70) { //always true will be executed after the 2nd if condition
    $('.fish1').stop().animate({'margin-left': ww, 'margin-top': '-45px'}, 3500, function(){
     $(this).css({
  'margin-left': '0px',
  'margin-top': '0px'});
     anf1();
     // call self invoked function anf1
     }); //move object to 100% of browser width
    console.log('finish')

}
}();

<强> JSFIDDLE