首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

jQuery .attr("value", val) 與 .val(val) 核心區別詳解

     編輯:程式設計綜合問答

現象對比


// 方式一:.val() — 顯示值更新,但 HTML 屬性不變
$("#plus").click(function(){
    $("#num").val(parseInt($("#num").val()) + 1);
});

// 方式二:.attr("value", ...) — HTML value 屬性同步更新
$("#plus").click(function(){
    $("#num").attr("value", parseInt($("#num").val()) + 1);
});

本質區別

方法操作對象影響範圍典型用途
.val(value)當前值(DOM property)用戶可見、表單提交攜帶、JS 讀取表單交互、動態修改輸入框內容
.attr("value", value)初始屬性(HTML attribute)頁面加載初始值、reset() 恢復值、outerHTML 顯示設置默認值、重置表單基準

深度解析

.val() — 操作 DOM Property

  • 修改 HTMLInputElement.value 屬性
  • 即時反映在界面上,用戶輸入、JS 讀取皆獲取此值
  • 表單提交時發送的是當前 value
  • 不改變 HTML 源碼中的 value="..." 屬性

.attr("value", ...) — 操作 HTML Attribute

  • 修改元素的 value 屬性節點
  • 等同於 setAttribute("value", ...)
  • 影響 defaultValue、form.reset() 行為
  • 可通過 element.getAttribute("value") 或查看外層 HTML 看到變化

最佳實踐

表單交互場景:

  • 讀取/設置用戶可見值 → 只用 .val()
  • 需要重置功能 → 設置 .attr("value", defaultVal) 同時 .val(defaultVal)
  • 獲取初始默認值 → element.defaultValue 或 .attr("value")

驗證代碼


<input id="test" value="0">
<script>
  $('#test').val('100');
  console.log('Property:', $('#test').val());        // 100
  console.log('Attribute:', $('#test').attr('value')); // 0 (未變)
  console.log('defaultValue:', document.getElementById('test').defaultValue); // 0
</script>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved