.value 取出的值是「字串」
這邊以 input 的 value 取值為例,請觀看以下範例:
1 2
| <input type="text" id="targetInput"> <button type="button" id="triggerBtn">觸發按鈕</button>
|
1 2 3 4 5 6 7
| const el = document.querySelector('#targetInput'); const triggerBtn = document.querySelector('#triggerBtn');
triggerBtn.addEventListener('click', function(e){ console.log(el.value); console.log(typeof(el.value)); })
|
如果在 input 輸入數字 123 以後點選「觸發按鈕」,可以在 console 中觀察到以下結果:
.value 取出來的值為字串,因此如果要對表單的「數值」進行運算,請記得要先使用 parseInt 做型別轉換。
1
| let newValue = parseInt(el.value);
|
.value, .getAttribute(‘value’) 的差異
1 2
| <input type="text" id="targetInput" value="123"> <button type="button" id="triggerBtn">觸發按鈕</button>
|
1 2 3 4 5 6 7 8 9
| const el = document.querySelector('#targetInput'); const triggerBtn = document.querySelector('#triggerBtn'); console.log(`el.value: ${el.value}`);
triggerBtn.addEventListener('click', function(e){ el.value = "任意填入的值"; console.log(`el.value: ${el.value}`); console.log(`el.getAttribute('value'): ${el.getAttribute('value')}`); })
|
點擊按鈕後可以發現, el.value 被更換為 “任意填入的值”,但 el.getAttribute 取得的還是預設的值 123。
統整:
- el.value 對應的是 input 欄位目前「輸入的值」
- el.getAttribute(‘value’) 對應的是 input 標籤的「預設屬性值」
- 修改 el.value 並不會影響 input 標籤的 value 預設屬性,使用 setAttribute() 才會。