parseInt() 没有按预期工作

parseInt() not working as expected

我现在正在对图像滑块进行自定义编码,我正在向每个滑块图像和缩略图图像添加一个 data-slideNum 属性,如下所示:

$('.slide').each(function(i) {
    $(this).attr('data-slideNum',i);
});

$('.thumbnail').each(function(i) {
    $(this).attr('data-slideNum',i);
});

当然,这会将幻灯片编号为 0-X。在滑块下方,我想添加一个标题,显示您所在的幻灯片编号,因此我尝试将 1 添加到幻灯片编号变量和幻灯片总数,以便数字正确:

$('.slideNum').html(parseInt(x+1)+' of '+parseInt(slideTotal+1));

第二个 parseInt() 工作正常,但第一个是连接而不是解析。

所以我得到的不是 2 of 5,而是 21 of 5 等等。

有什么想法吗?

您正在 x1 上执行字符串连接,然后取 int 值。

基本上你所做的相当于:

var x = "2";
x = x + 1;
parseInt(x);

您可以通过在 parseInt 调用返回整数后将 1 添加到 x 来解决此问题。

$('.slideNum').html( 
     ( parseInt(x, 10) + 1 ) 
     + ' of '
     + ( parseInt(slideTotal, 10) + 1 )
   ); // closes .html

此外,为 parseInt

提供一个基数总是一个好主意

此外,如果 slideTotal 是数组的长度,则不需要将 1 添加到 slideTotal,也不需要将其转换为 int。所以:

$('.slideNum').html( ( parseInt(x, 10) + 1 ) + ' of ' + slideTotal);

应该足够了。

$('.slideNum').html(parseInt(x+1)+' of '+parseInt(slideTotal+1));

问题所在

你是 parsing( x + 1 ) 首先给你一个字符串,因为 x 是一个字符串。然后你将该字符串解析为整数...你应该 parse(x) 然后加 1 就可以了。

应该是

$('.slideNum').html((parseInt(x) + 1) +' of '+parseInt(slideTotal+1));

您首先连接,而不是尝试解析:

parseInt(x+1)

其中 x 可能是一个字符串,您将它与 1 连接起来,得到 2 + 1 = 21 表示为字符串,最后您只是解析 21到一个整数。

您必须先解析 x,然后再进行算术运算,例如:

parseInt(x) + 1 

尝试 parseInt(x) + 1 而不是 parseInt(x + 1)。连接字符串和数字会导致字符串连接。