2017-04-22 5 views
0

Math.randomを使用してエイリアンのランダムな位置を選択していますが、ループ内の関数で使用すると、別のposition.soが返されますここに?forループのMath.random

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

のような初期のCSSの位置を設定するために外国人をループする必要があります。 –

+0

また '+ = 10'は私にとって有効なCSS値のようには見えません。それをチェックしたいかもしれません。 –

+0

+ 10は実際には有効な値で、topを意味します:alien.position()。top + 10 @SamAxe –

答えて

0

alien.cssを使用してすべてのエイリアンを同じ位置に設定しています。あなたはあなたが同じ位置に `createAliens`関数が呼び出されるたびに` .alien`クラスで**すべての**オブジェクトを設定している。この

$(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

ありがとうございます! –