比较属性来源

时间:2015-07-24 06:00:20

标签: javascript jquery regex

我有一个左箭头,单击时应减少文件名,以便加载上一张图片。

我认为使用带基数的parseint可以做到(注释掉)但是如果它原来是NAN我使用了字符串替换,但它仍然不起作用。

我在这里遗漏了什么吗?

$('#lar').on("click", function() {
    /*var num = parseInt( $('#main-img').attr('src'),  10);
    if (num > 0) {*/

    var num = $('#main-img').attr('src').replace(/\d+/, '');

    if (num > 0) {
        $('#main-img').attr('src', $('#main-img').attr('src').replace(/\d+/, function(val) {
            return parseInt(val) - 1;
        }));
    }
});

谢谢你们。

1 个答案:

答案 0 :(得分:1)

代码中的问题:

  1. 您的regex不正确
  2. 您需要将提取的字符串转换为numbers
  3. 您没有使用regex提取数字。使用以下regex从字符串中提取数字。

    var num = $('#main-img').attr('src').match(/(\d+)/)[1];
    

    您需要使用parseInt将字符串解析为整数。否则,将永远不会满足条件num > 0

    var num = parseInt($('#main-img').attr('src').match(/(\d+)/)[1], 10);
    //        ^^^^^^^^^                                             ^^^^^
    

    <强>演示

    &#13;
    &#13;
    var str = 'abc123';
    
    var num = str.match(/(\d+)/)[1];
    
    document.write('num= ' + num);
    document.write('<br />');
    document.write('<br />');
    document.write(typeof num);
    document.write('<br />');
    document.write(typeof parseInt(num, 10));
    &#13;
    &#13;
    &#13;