【问题标题】:parseInt() not working as expectedparseInt() 没有按预期工作
【发布时间】:2015-02-10 18:44:18
【问题描述】:

我现在正在自定义编码一个图像滑块,我正在为每个滑块图像和缩略图添加一个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等等。

有什么想法吗?

【问题讨论】:

  • 这种行为意味着x 值是一个字符串。您能否扩展您的 JS 代码示例以显示您从何处检索这些值。
  • 为什么投反对票?不管怎样,谢谢大家的回复,现在解决了!
  • Sum instead of concatenate 的可能重复项

标签: jquery parseint


【解决方案1】:

您正在对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);

应该足够了。

【讨论】:

  • 感谢您的周到回答,非常感谢!
【解决方案2】:
$('.slideNum').html(parseInt(x+1)+' of '+parseInt(slideTotal+1));

是问题

you are parsing( x + 1 ) 首先给你一个字符串,因为 x 是一个字符串。然后你将该字符串解析为一个整数......你应该 parse(x) 然后加 1 你会得到它。

应该是

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

【讨论】:

    【解决方案3】:

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

    parseInt(x+1)
    

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

    你必须先解析 x,而不是算术,例如:

    parseInt(x) + 1 
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2021-10-19
        • 2020-03-18
        • 2012-06-14
        • 2014-11-15
        • 1970-01-01
        • 2012-07-02
        • 2011-09-07
        • 2013-03-03
        • 2015-05-18
        相关资源
        最近更新 更多