我想写一个程序,所以我可以输入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);" />
答案 0 :(得分:1)
input
的当前值由其value
属性反映,而不是value
属性。如果IE通过getAttribute
向您提供当前值,那么它就是IE中的一个错误。
您应该使用obj.value
,而不是obj.getAttribute("value")
。
有点令人困惑。 :-) value
属性定义input
的默认值,而不是其当前值。当用户更改它时,它不会改变。当前值没有属性,您可以通过value
属性访问它。某些属性由具有相同名称的属性(例如id
)反映,但value
不是其中之一。 (有一个属性反映了value
属性:defaultValue
。但同样,它是默认属性,而不是当前值。)