自调用函数调用重复但功能代码有问题重复功能输出。
的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/
答案 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 强>