此代码是一个问题的答案。所以我想知道为什么JS在某些情况下表现不同 单击删除按钮时,以下代码用于删除最后一位数字 例如,如果我输入777887328758或带有重复数字的长号码并且快速重复点击删除按钮,则删除第一个数字或中间数字或有时删除最后一个数字。为什么会这样?
function del(){
var num=document.getElementById('num').value;
num=num.replace(num[num.length-1],'');
document.getElementById('num').value=num;
}
function isValid(a){
if(!(/^[0-9]+$/.test(a.value))){
a.focus();
console.clear();
console.log("Please enter number");
}
}
<input type="tel" onblur="isValid(this);" id="num" /><button onclick="del();">Del</button>
答案 0 :(得分:6)
因为它有一个bug。请参阅del()
中的这一行:
num=num.replace(num[num.length-1],'');
它做什么?它取num的最后一个字符,并替换,这就是该字符的第一个出现的错误。
修正版:
num = num.substr(0, num.length - 1);
答案 1 :(得分:1)
用它来删除数字
function del() {
var num = document.getElementById('num').value;
num = num.slice(0, num.length-1);
document.getElementById('num').value = num;
}