改变最后一张图像的位置

时间:2013-06-28 06:46:19

标签: javascript jquery css image setinterval

代码:

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的最后一张图片并更改 其属性?

提前致谢。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

你可能想要考虑这样的事情:

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

这将添加新的&lt; div&gt;包含图像到&lt; body&gt;。