2011-09-09 11 views
1

私はこのランダムな位置のスクリプトを得ました。しかし、それは最初のイメージでのみ動作します...私は間違っていますか?各介入の問題をJquery

var randnumsX = [1,2,3,4,5,6,7,8]; 
var randnumsY = [1,2,3,4,5,6]; 

$('#obra img').each(function(i,el) { 

    m = Math.floor(Math.random()*randnumsX.length); 
    randnumsX = randnumsX.splice(m,1); 
    posx = Math.floor(m * 50); 

    n = Math.floor(Math.random()*randnumsY.length); 
    randnumsY = randnumsY.splice(n,1); 
    posy = Math.floor(n * 50); 

    $(el).css({position:'absolute', left: posx + 155, top: posy});  
    $(el).fadeIn('slow'); 

}); 
+2

あなたのマークアップはどのように見えますか? id = "div"を持つ1つのdiv内のすべての画像ですか? – Timbo

+0

あなたがデバッグすれば...それはループしますか?つまり、$( 'div img')で収集されたコレクションの数はいくつですか? –

+0

コードは修正されましたが、まだ動作しません。マークアップは正しいです。私は内部に5つの画像を持つ1つのdiv(#obra)を得ました。私は以前のものを繰り返さずにポジションを無作為化したい。 – homemrobo

答えて

1

spliceは、削除された要素を削除した配列ではなく、削除された要素を返します。

+1

はrandnumsX = randnumsX.splice(M、1)'の交換します。同様に名前が付けられた 'slice()'メソッドは 'splice()'と同様に配列を変更しないので、タイプミスを監視します。 – Blazemonger

+0

それはmblase75です!ありがとう! – homemrobo

+0

x = randnumsX.splice(m、1); posx = Math.floor(x * 50); – jbrond

0

あなたはdiv要素にアクセスしている場合、あなたは#記号

$('div img').each(function(i,el) { 

m = Math.floor(Math.random()*randnumsX.length); 
randnumsX = randnumsX.splice(m,1); 
posx = Math.floor(m * 50); 

n = Math.floor(Math.random()*randnumsY.length); 
randnumsY = randnumsY.splice(n,1); 
posy = Math.floor(n * 50); 

$(el).css({position:'absolute', left: posx + 155, top: posy});  
$(el).fadeIn('slow'); 
を必要としません

});

+0

こんにちはMeenakshi、元の投稿に固定されています。 '' randnumsX.spliceと(M、1); 'トリックを行うだろう – homemrobo