提问者:小点点

Javascript ID号在2位后不工作


我在处理身份证号码时有这个问题。 我试图删除一些添加的行,当它达到10以上时,它没有删除正确的行。 就像如果我愿意的话第11排。 它将删除行1而不是行11,它只能找到#Field1而不是#Field11。 有没有人能帮我解决这个问题?

$('.remove-me').click(function(e){
        e.preventDefault();
        var fieldNum = this.id.charAt(this.id.length-1);
        var fieldID = "#field" + fieldNum;
        $(this).remove();
        $(fieldID).remove();

    });

共3个答案

匿名用户

如果您的ID总是喜欢字段..,请尝试regex

null

$('.remove-me').click(function(e){
        e.preventDefault();
        var numberPattern = /\d+/g;
        var fieldNum = this.id.match( numberPattern ).join('');
        var fieldID = "#field" + fieldNum;
        console.log(fieldNum)
        $(this).remove();
        $(fieldID).remove();

    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="btn remove-me"id="field10">10</a>
<a class="btn remove-me"id="field1">1</a>

匿名用户

您似乎只剪切了id的最后一个字符,如this.id.length-1所示。 你能试试这样的东西吗:

$('.remove-me').click(function(e) {
    if (this.id.match(/[0-9]+$/)) {
        e.preventDefault();

        var fieldNum = this.id.match(/[0-9]+$/)[0];
        var fieldId = '#field' + fieldNum;

        $(this).remove();
        $(fieldId).remove();
    }
});

通过与/[0-9]+$/匹配,您可以剪切ID末尾的任意数字串。

匿名用户

您只得到id的最后一位数字,因此对于两位数是不起作用的。 如果您喜欢丑陋的解决方案,而一些编码人员也喜欢这种东西,那么就使用正则表达式。 但是如果你在生活中喜欢一点优雅,那么使用36(0-9a-z)基数,这样在你用完之前你就有更多的个位数了。