1

コード:

function showLetter() {
    setInterval(function() {
        var letter = imgsArray[random()];
        var top = random();
        var left = random();
        $("div").append("<img src='imgs/" + letter + ".png'>");
        $("div").last().css({"position": "absolute", "top": top + "px", "left": left + "px"});
    }, 1000);
}

配列の各位置にimgsArray、画像の名前があります。

やりたいこと: 1000 ミリ秒ごとに画像を追加して、画面上のランダムな位置に配置します。(重複を防ぐことができればそれは素晴らしいことですが、それはすでに回答されていると思います)。

機能: 1000 ミリ秒ごとに、文字の新しい画像を追加し、すべての画像に同じプロパティを与えて、最終的にすべて水平方向に整列させます:)

なぜこれが起こっているのか本当にわかりません。では$("div").last().css()、div に追加された最後の画像を選択して、そのプロパティのみを変更していませんか?

前もって感謝します。

4

2 に答える 2

2

$("div").last()`$("div")jquery オブジェクトの最後の項目を提供します。その jQuery オブジェクトには画像がありません。

おそらくあなたが望むのは:

$("div img").last()

しかし、それは非常に非効率的です。新しく作成された画像オブジェクトを操作したいだけなら、それを直接操作できます。

function showLetter() {
    setInterval(function() {
        var letter = imgsArray[random()];
        var top = random();
        var left = random();
        var img = $("<img src='imgs/" + letter + ".png'>");
        img.css({"position": "absolute", "top": top + "px", "left": left + "px"});
        $("div").append(img);
    }, 1000);
}
于 2013-06-28T06:49:07.960 に答える
1

次のようなことを検討してください。

var div = $('<div/>').css({position:'absolute'....}).appendTo('body');
var img = $('<img/>', {src:'imgs/' + letter + '.png'}).appendTo(div);

これにより、画像を含む新しい <div> が <body> に追加されます。

于 2013-06-28T06:57:15.483 に答える