2017-04-22 47 views
0

我使用Math.random爲外星人選擇一個隨機位置,但是當我在一個循環內的函數中使用它時,它不會給出不同的位置。在這裏?Math.random for循環

for(var i=0;i<5;i++){ 
    createAliens(parseInt(Math.random() * 940 + 1));} 

    var alien; 
    //creating aliens 
    function createAliens(x) { 
     $('body').append('<img class="alien" src="alien.ico" width="70" height="70">'); 
     alien=$('.alien'); 
     alien.css({ 
     position: "absolute", 
     left: x, 
     top:-20 
     }); 
    setInterval(function() { 
     alien.css({ 
     top: "+=10" 
     }); 
     if (alien.position().top > 450) { 
     alien.remove(); 
     } 
    }, 1000) 
    } 
+0

要設置**每次'createAliens'函數被調用所有**對象以'.alien'類相同的位置。 –

+0

另外,'+ = 10'對我來說看起來不像一個有效的css值。可能想檢查一下。 –

+0

+ = 10實際上是一個有效值,它意味着top:alien.position()。top + 10 @SamAxe –

回答

0

您正在使用alien.css設置所有具有相同位置的外星人;你需要循環外星人設定初始位置的CSS這樣

$(document).ready(function() { 
    //create aliens 
    for(var i = 0; i < 5; i++) { 
$('body').append('<img class="alien" src="alien.ico" width="70" height="70">'); 
    } 

    //reference here all aliens 
    var alien = $('.alien'); 
    //set initial value, each alien itself 
    $.each(alien, function() { 
    $(this).css({ 
     position: "absolute", 
     left: parseInt(Math.random() * 940 + 1) + 'px', 
     top: -20 
    }); 
    }); 

    //coming down 
    setInterval(function() { 
     alien.css({ 
      top: "+=10" 
     }); 
     if (alien.position().top > 450) { 
      alien.remove(); 
     } 
    }, 1000); 
}); 
+0

非常感謝! –