值不会在setInterval中重置

时间:2013-07-17 07:54:11

标签: jquery

我在屏幕上移动了一个绝对的div。当div退出屏幕时,我重置了值,这是代码:

    setInterval( function() {
        if( p2.offset().top <= 1 ) {
             p2.css('bottom','50').css('left','400');
        }
        p2.css('bottom', '+=1').css('left', '+=1');
    }, 10 );

当我在if条件中发出警报时,我看到此警报,但代码 p2.css('bottom','50').css('left','400') 似乎未执行... div继续移动到屏幕外而不重置在bottom: 50pxleft: 400px

我哪里错了?

3 个答案:

答案 0 :(得分:5)

指定您的单位,它将起作用:

p2.css('bottom','50px').css('left','400px');

或者,将对象传递给css()方法:

p2.css({bottom:50, left:400});

这假设您正在谈论像素。

JSFiddle

答案 1 :(得分:1)

更改css时必须指定单位:

p2.css('bottom','50px').css('left','400px');

修改

抱歉,我不知道,但您可以像使用+=1一样。

另外,你不能在css的jQuery属性中使用像+=这样的运算符。

你宁愿这样做:

var newBottom = (parseInt(p2.css('bottom')) + 1) + "px";
var newLeft = (parseInt(p2.css('left')) + 1) + "px";

p2.css('bottom', ).css('left', '+=1');

<击>

答案 2 :(得分:-2)

确实如此,它被覆盖......

setInterval( function() {
        if( p2.offset().top <= 1 ) {
             p2.css('bottom','50').css('left','400');
        }else{
             p2.css('bottom', '+=1').css('left', '+=1');
        }
    }, 10 );