我在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;">
错误地减去
正确添加
答案 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;