parseInt()未按预期工作



我现在正在自定义编码一个图像滑块,并为每个滑块图像和缩略图添加一个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)。串接字符串和数字会导致字符串串接。

最新更新