2016-05-06 8 views
1

私はjqueryを使用してウェブ上の特定のdivから変数を削除する方法を見つけようとしています。 これは配列の使用には関係しません。もし私がfadeIn()またはsearch()remove()を使ってそうすることができれば、それはさらに優れています。jqueryを使用して変数をランダムに削除するにはどうすればよいですか?

var something = '#img' + count; 

ウェブ上では、画像は時間が経つにつれて(setTimeoutを使用して)divに追加されます。これらの画像は変数(something)に割り当てられており、ウェブ上の特定のdivからその画像を削除する方法を見つける必要があります。それは、隠すことができます、何でも、それはユーザーのビューからランダムに(時間とどちらの画像が消えます)消えなければなりません。

ご協力いただきありがとうございます。

私のファンクションコード:

var count = 0; 

function foo() { 
    var xPos = xPosition(); 
    var yPos = yPosition(); 
    var someTime; 

    $("div").append('<img id="Img" ' + count + ' src = "img.png" style="top:' + yPos + 'px; left: ' + xPos + 'px; " />'); 
    var something = "#Img" + count; 
    someTime = setTimeout('foo()', randInterval()); 
    $(something).hide(); 
    count++; 

    if (timeRemaining == 0) { 
    clearTimeout(someTime); 
    return; 
    } 
+0

'$(something).hide()'は何もしませんか? – Barmar

+0

私はそう思っていましたが、他の何かが見当たらず、うまくいきません。 hide()は何もしません。 – VaygrEmpire

+0

コードを表示する必要があります。間違っていることを推測する方法はありません。 – Barmar

答えて

0

すべての画像にクラスを与えます。 $(".class").length()を使用して画像の数を取得し、この範囲の乱数を選択し、.eq()でその要素を削除することができます。

function addImage() { 
    var xPos = xPosition(); 
    var yPos = yPosition(); 
    $("div").append($("<img>", { 
     src: "img.png", 
     "class": "imageclass", 
     style: { 
      top: yPos+"px", 
      left: xPos+"px" 
     } 
    })); 
    setTimeout(addImage, randInterval()); 
} 
setTimeout(addImage, randInterval()); 

function removeImage() { 
    var images = $(".imageclass"); 
    if (images.length) { 
     var rand = Math.floor(Math.random() * images.length); 
     images.eq(rand).remove(); 
    } 
    setTimeout(removeImage, randInterval()); 
} 
setTimeout(removeImage, randInterval()); 

私のコードでは、イメージの追加と削除に別々のタイマーを使用しています。必要に応じて、setTimeoutremoveImage()から削除し、addImageから呼び出すことで、新しい画像を追加するときに常に画像を削除することができます。

+0

私は本当に時間を感謝し、あなたが助けた。ありがとう! – VaygrEmpire

0

してくださいは、今まで物事のIDと作品を一緒番名に番号を追加することはありません。それは維持不能で悪いです。 classを使用してください。

要素または要素に、クラス名を追加して目的または機能を割り当てます。要素に情報を追加したい場合は、属性名に接頭辞data-を使用してください。すべて合法です。 data-itemidは例です。

var those = $('.that-class-name')と一致する要素をクエリして、再利用するために保存できます。そこからthose.eq(0)those.eq(x.length - 1)を使って個々の要素にアクセスできます。たとえば、3番目のものを削除する必要があることを何とか知っていたら、those.eq(3).remove();。それらを選択して条件に一致するものだけを選択する場合は、thisで参照される要素を削除する必要がある場合はを使用します。callbacktrueを返します。別のセレクタでフィルタリングする場合は、.filterもセレクタを受け入れます。

これは意味ですか?

+0

私が混乱してしまったら、すみません。私がeqを使うことができない理由は、インデックス番号を得る方法がないからです。 「何か」が2秒ごとに追加されているので、どの数字が削除されるのかわからない。私はこのクラスの 'class'を使うことはできませんが、私に知らせることに感謝します。 – VaygrEmpire

関連する問題