1

我创建了一个函数,单击时隐藏 div 的第一个子项并将其替换为另一个...现在查询是单击alert(divno)时应返回 2 如果 divno 为 1 但返回 11

$('#rightarrow').click(function(){
    var getdivname = $('#dcontainer').find("div").first();
    var divid = getdivname.attr("id");
    var divno = divid.match(/[0-9]+/);
    $('#d'+divno).hide();
    divno=divno+1;
    $('#d'+divno).appendTo('#dcontainer');
     alert(divno);
});

如果我使用 parseInt(divid, 10) 它返回 NaN

4

2 回答 2

3

只需使用一元 +将值转换为divno整数而不是字符串:

divno=+divno+1;

一元加号运算符在其操作数之前并计算其操作数,但如果尚未转换为数字,则尝试将其转换为数字。例如,y = +x 获取 x 的值并将其分配给 y;也就是说,如果 x 为 3,则 y 将获得值 3,而 x 将保留值 3;但如果 x 是字符串“3”,则 y 也会得到值 3。

我们可以通过尝试以下测试来证明这一点:

"1" + 1     // "11"
+"1" + 1    // 2
于 2013-10-21T13:23:13.130 回答
2

parseInt你需要divno在做之前+1

divno=parseInt(divno)+1;

JavaScript 将您解释divno为字符串(因为.match返回字符串)而不是整数。这样做会强制 JavaScript 识别它是整数而不是字符串。

于 2013-10-21T13:22:24.370 回答