这段代码有什么问题

时间:2011-05-09 17:00:28

标签: javascript jquery html image

function moveit() {

    var newTop = Math.floor(Math.random()*350);
    var newLeft = Math.floor(Math.random()*1024);
    var newDuration = 9000

    $('#friends').animate({
      top: newTop,
      left: newLeft,
 !!! -->     width: "+="+((newTop-$('friends').css('top'))*3),
      }, newDuration, function() {
        moveit();
      });

}

$(document).ready(function() {
    moveit();
});

应该让图像飞来飞去(工作)。 我添加了标有“!!! - >”的行这应该会使图像越接近页面底部。

我做错了什么?代码不会抛出任何错误。

4 个答案:

答案 0 :(得分:5)

$('friends').css('top')返回一个字符串,您需要将其转换为int才能使用它从newTop中减去

parseInt($('friends').css('top'), 10)

会做的伎俩

您还需要在jQuery选择器中使用ID或类标识符'#friends''.friends',但我想您正在寻找具有朋友ID的内容

试试这个

width: "+="+((newTop - parseInt($('#friends').css('top'), 10))*3),

答案 1 :(得分:4)

您的意思是$('#friends')而不仅仅是$('friends')吗?您的声明正在寻找元素标记“friends”并尝试获取它的top CSS属性值。

我建议您也缓存$('friends')选择器,这样您就不必为.animate()调用选择两次。

答案 2 :(得分:2)

非常确定您的问题是.css("top")会返回类似100px的字符串值。您希望使用.position().top代替获取整数值。

答案 3 :(得分:0)

我认为你的问题在于如何获得最高职位。可能不是你想要的,但我在这里工作......

http://jsfiddle.net/shaneblake/YXMbh/