這行代碼:的setAttribute()我期望的方式不起作用到
document.getElementById('01').getElementsByTagName("input")[0].setAttribute("value", "1");
工作完全正常時,「輸入」已經沒有價值。但是當輸入已經有一個值時,它不會改變這個值。這是爲什麼?
這行代碼:的setAttribute()我期望的方式不起作用到
document.getElementById('01').getElementsByTagName("input")[0].setAttribute("value", "1");
工作完全正常時,「輸入」已經沒有價值。但是當輸入已經有一個值時,它不會改變這個值。這是爲什麼?
聽起來像是你面對元素屬性value
和value
屬性之間的混淆。那些是不一樣的東西。
問題在於value-attribute服務於默認值的目的,因此如果該元素已經具有屬性值,那麼更改value-attribute將不會反映在UI中。
文件說this:
使用的setAttribute()來修改某些屬性,在XUL最顯着的價值,工作不一致,因爲屬性指定的默認值。要訪問或修改當前值,應該使用屬性。例如,使用elt.value而不是elt.setAttribute('value',val)。
因此證明這種情況考慮這個小演示:
document.getElementById("01").getElementsByTagName("input")[0].value = 'property set';
document.getElementById("01").getElementsByTagName("input")[0].setAttribute("value", "two");
<div id="01">
<input type="text" />
</div>
在上面的代碼中的值屬性確實更新珍惜two
,你可以驗證它,如果你嘗試用getAttribute('value')
來讀回它,但是value-property優先於attribute,所以以後不會渲染。
當標記已具有value
屬性時,JavaScript絕對會更改<input>
標記的值。在這裏看到自己:輸入字段http://jsfiddle.net/qg7d4m32/
同意。我認爲他的問題在於他正在改變一次,然後試圖再次改變它。在這種情況下,取決於他如何調用函數/事件,就是爲什麼它看起來並不像它正在改變。希望他會爲我們發佈更多的代碼。 – Fata1Err0r
好吧,我親眼看到了。我試了一下,但沒有奏效。不管他們說什麼。 –
@zahramoradi爲我們發佈您的一些代碼(輸入,您的javascript),以便我們可以爲您提供適當的幫助。 – Fata1Err0r
如果要設置一定的價值,使用價值
純JavaScript:
document.getElementById('01').getElementsByTagName("input")[0].value = "value"
的jQuery:
$("input").val("value")
我認爲他使用的是常規JavaScript,而不是jQuery。不過,我同意這篇文章,學習jQuery,你會讓生活變得更容易。 – Fata1Err0r
作者請求了一個javascript解決方案,這意味着沒有人應該強制jQuery給他。另外,請注意,jQuery不再相關。 – KarelG
@KarelG雖然我同意沒有人應該爲一個簡單的JavaScript問題強制使用jQuery解決方案,但說jQuery不再相關,這是非常大膽的... – War10ck
你試過.value = 1而不是.setAttribute(「value」,「1」)?? – Sushil
如果是我自己,我只會將元素存儲在var中,並使用var.value = 1而不是使用setAttribute方法。如果這不符合您的總體目標,請在您的聲明中發佈一些代碼,我們會讓您修復。 – Fata1Err0r
@Sushil是的,謝謝。這樣可行。 –