2016-11-23 31 views
0


我寫了這個代碼:3個烏雲飛過我的網站。
問題是:我可以如何縮短? (例如:在一個函數或類似的東西)jQuery - 如何不重複的代碼?

var x1 = 1500-Math.random()*2000; 
function animateDivers1() { 
    var y1 = 500-Math.random()*600; 
    $('.section1 .cloud1').css('left', x1); 
    $('.section1 .cloud1').css('top', y1); 
    x1 = -400; 
    var time = 15000+Math.random()*10000; 
    $('.section1 .cloud1').animate({ 
     left: x1+2000 
    }, time, "linear", animateDivers1 
)} 
animateDivers1(); 


var x2 = 1500-Math.random()*2000; 
function animateDivers2() { 
    var y2 = 500-Math.random()*600; 
    $('.section1 .cloud2').css('left', x2); 
    $('.section1 .cloud2').css('top', y2); 
    x2 = -400; 
    var time = 15000+Math.random()*10000; 
    $('.section1 .cloud2').animate({ 
     left: x2+2000 
    }, time, "linear", animateDivers2 
)} 
animateDivers2(); 


var x3 = 1500-Math.random()*2000; 
function animateDivers3() { 
    var y3 = 500-Math.random()*600; 
    $('.section1 .cloud3').css('left', x3); 
    $('.section1 .cloud3').css('top', y3); 
    x3 = -400; 
    var time = 15000+Math.random()*10000; 
    $('.section1 .cloud3').animate({ 
     left: x3+2000 
    }, time, "linear", animateDivers3 
)} 
animateDivers3(); 

,當然我想添加更多 - 但是複製這個代碼看起來傻

+1

你爲什麼不只是通過'雲迭代.section1?' –

回答

1
function animateDivers(cloud, iter=0) { 
    var x = (iter == 0) ? 1500-Math.random()*2000 : -400 
    var y = 500-Math.random()*600; 
    $('.section1 '+cloud).css('left', x); 
    $('.section1 '+cloud).css('top', y); 
    x = -400; 
    var time = 15000+Math.random()*10000; 
    $('.section1 '+cloud).animate({ 
     left: x+2000 
    }, time, "linear", function() { animateDivers(cloud, iter+1) } 
)} 

for (i=1;i<=3;i++) { 
    animateDivers(".cloud" + i); 
} 
+0

沒有, 其不會再次動畫結束 – Bozu

+0

此之後重新開始應該做的伎倆,在第一次迭代之後,X值始終是-400。 – anthonybell

+0

是的,那工作 - 謝謝! – Bozu