JavaScript程序在IE中运行良好,但在Firefox和Chrome中不行。填写IP地址

时间:2017-04-04 14:34:15

标签: javascript google-chrome

我想写一个程序,所以我可以输入0到255之间的IP地址号。 但是这个程序在IE中运行良好,但在Firefox和Chrome中运行不佳。 有问题吗?感谢。

我刚刚发现它在这里也不起作用。

function check(obj) {
  var txt = obj.getAttribute("value");
  txt = parseInt(txt);
  if (txt > 255 || txt < 0) {
    alert("must between 0 and 255");
    obj.focus();
    obj.select();
  } else {
    if (txt > 25) {
      var next = parseInt(obj.getAttribute("id")) + 1;
      if (next < 5) {
        document.getElementById(next.toString()).focus();
      }
    }
  }
}
<input type="text" maxlength="3" id="1" onkeyup="check(this);" />
<input type="text" maxlength="3" id="2" onkeyup="check(this);" />
<input type="text" maxlength="3" id="3" onkeyup="check(this);" />
<input type="text" maxlength="3" id="4" onkeyup="check(this);" />

1 个答案:

答案 0 :(得分:1)

input的当前值由其value 属性反映,而不是value 属性。如果IE通过getAttribute向您提供当前值,那么它就是IE中的一个错误。

您应该使用obj.value,而不是obj.getAttribute("value")

有点令人困惑。 :-) value 属性定义input默认值,而不是其当前值。当用户更改它时,它不会改变。当前值没有属性,您可以通过value属性访问它。某些属性由具有相同名称的属性(例如id)反映,但value不是其中之一。 (有一个属性反映了value属性:defaultValue。但同样,它是默认属性,而不是当前值。)