2017-04-04 63 views
0

我想编写一个程序,所以我可以输入0到255之间的IP地址编号。 但是这个程序在IE中运行良好,但是在firefox和chrome中没有。 有没有问题?谢谢。JavaScript程序在IE中运行良好,但不适用于Firefox和Chrome。填写IP地址

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

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

看起来像一个IE浏览器的bug(因为它不应该在那里工作要么) - 我相信'OBJ .getAttribute(“value”);'_应该给出属性的原始值,而不是当前输入的值。 –

+1

什么“不起作用”?你能解释一下你的问题吗? – Frxstrem

+1

例如,您应该使用'obj.value',而不是'obj.getAttribute(“value”)'。 –

回答

1

input一个的当前值是由它的value属性,而不是value属性反射。如果IE通过getAttribute给你当前值,这是IE中的一个错误。

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


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

+1

非常感谢。有效。我尝试了几个小时。 – alwayslz

+0

所以我明白了。输入时文档不会改变。所以getAttribute什么也得不到。 – alwayslz

相关问题