简单加法(x + = 50)vs循环得到结果

时间:2015-07-13 19:30:31

标签: jquery jquery-animate

我是jQuery的新手,但这可能只是我认为的一个非常基本的代码问题 - 令人尴尬我无法弄清楚 - 让它通过一个愚蠢的解决方案工作,但真的很想知道我错过了什么?

我成功从动态生成的文本中获取值。价值是百分比,所以我正在切掉%符号。我试图在屏幕上设置一个条形图来显示%,但是需要在它上面添加一些尺寸(50px)才能填充div。下面的代码完全符合我的要求......但为什么我不能只是'x + = 50'甚至'x = x + 50'?其中任何一个都会让酒吧一路走到屏幕上。我试着添加'px',因为我猜我不知道单位......但没有快乐。

$(document).ready(function() {
 $('.animate').each(function(){
    var x = $(this).text().slice(0,-1);
    for (a = 0; a < 50; a ++)  // Stewpid
        x ++;
    var posInfo = {'width': x};
    $(this).animate(posInfo, 1100);
 });
});   

任何人都能把我踢到脑袋,看看我搞砸了什么?

1 个答案:

答案 0 :(得分:2)

$(function(){
    $('.animate').each(function(){
        var x = parseInt($(this).text());
        x += 50;
        var posInfo = {'width': x};
        $(this).animate(posInfo, 1100);
    });
});

问题在于$(this).text()是一个字符串,即使您删除了%符号。

现在,在JS中,+既是add运算符又是字符串连接,因此结果将是一个字符串,而不是一个整数。

相反,++运算符只是一个整数,所以它在执行算术运算之前将字符串转换为int。

只需使用parseInt,就会为您删除%,并将结果转换为int