JavaScript有时表现不同

时间:2017-02-24 11:04:50

标签: javascript

此代码是一个问题的答案。所以我想知道为什么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>

2 个答案:

答案 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;
}