jquery添加attr值

时间:2013-12-13 15:29:16

标签: jquery scroll attr

我在else语句的底部减去了,哪个工作正常,但if语句没有正确添加值。脚本如何工作,当用户滚动它时移动速度与speed-racers值一样快,它会移动,speed-racer从racer-offset中减去,当racer-offset为0时,它会停止任何进一步的移动,然后当用户滚动时返回相反的方向,它应该将speed-racer的值加回到racer-offset,直到达到leftMovements值,然后它将停止。它正确地减去,但是当假设要添加值时,问题就开始了。在下图中你看到减去racer-offset =“2525252525252525”,它应该做什么,取25的值+将它加到现有值,这将是racer-offset的值,直到下一个滚动发生了。谢谢

问题代码------

 $('.images').each(function(){
            if($(this).position().left >= $(this).attr('loc')){
            console.log("0 == stopped");

            }
            else {
            speedR = $(this).attr('speed-racer');
            $(this).css({left : "+="+speedR});
            $(this).attr('racer-offset') + speedR;
            $(this).attr('racer-offset', $(this).attr('speed-racer') + $(this).attr('racer-offset'));
            }
        });

整个代码:

$(window).scroll(function(){
if(lastLeftLocation > $(document).scrollLeft()) {
    $('.images').each(function(){
            if($(this).position().left >= $(this).attr('loc')){
            console.log("0 == stopped");

            }
            else {
            speedR = $(this).attr('speed-racer');
            $(this).css({left : "+="+speedR});
            $(this).attr('racer-offset') + speedR;
            $(this).attr('racer-offset', $(this).attr('speed-racer') + $(this).attr('racer-offset'));
            }
        });
    }
else {
    $('.images').each(function(){
        if($(this).attr('racer-offset') <= 0){
        console.log("0 == stopped");
        }
        else {
        speedR = $(this).attr('speed-racer');
        $(this).css({left : "-="+speedR});
        $(this).attr('racer-offset', $(this).attr('racer-offset') - speedR);
        }
    });
}

});

HTML

   <img class="images" racer-offset="1075" speed-racer="25" src="http://feeneywireless.com/assets/img/fwman/FeeneyMan_prod_st.png" loc="1344" leftmovement="1300" style="left: 1119px;">

错误地减去 enter image description here

正确添加 enter image description here

2 个答案:

答案 0 :(得分:1)

你正在进行字符串连接而不是算术加法,在添加之前使用parseInt()将字符串转换为int

$(this).attr('racer-offset', parseint($(this).attr('speed-racer'), 10) + parseInt($(this).attr('racer-offset'), 10));

答案 1 :(得分:1)

您没有将值转换为整数。因此,您的结果是串联字符串:

"250" + "250" = "250250";

要将您的值转换为整数,只需在通话前粘贴Unary Plus+):

speedR = +$(this).attr('speed-racer');

$(this).attr('racer-offset',
                   +$(this).attr('speed-racer') + +$(this).attr('racer-offset'));

转换为整数时:

250 + 250 = 500;