2017-04-04 62 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

相關問題