input的value属性写死在标签中即为默认值,仅type="file"和type="password"例外;JS修改需区分setAttribute(设初始值)和el.value=(改当前值);表单重置恢复HTML中value属性值;React/Vue中value由state或v-model控制。

value 属性直接写死在 <input> 标签里就能生效
只要不是 type="file" 或 type="password"(后者虽可设但不显示),value 属性写在标签上,浏览器就会把它当默认值渲染。比如:
<input type="text" name="username" value="admin">页面加载后输入框就自动填好 "admin",用户删掉才变空。
动态设置 value 时别混淆 value 属性和 value 属性值
用 JavaScript 改默认值,得区分两件事:
• 设置 DOM 属性(影响初始状态):用 el.setAttribute('value', 'new')
• 修改元素的当前值(影响用户看到的内容):用 el.value = 'new'
前者只在页面首次加载时起作用;后者实时生效,但不会改变 HTML 源码里的 value 属性值。常见错误是用 setAttribute 想改用户正在输入的值,结果没反应。
表单重置(<input type="reset">)只恢复到 value 属性的原始值
如果页面加载后你用 JS 改了 el.value,点重置按钮,输入框会回到最初 HTML 里写的 value 值,而不是你 JS 设置的那个。这意味着:
• 不想被重置覆盖?别写死 value 属性,改用 JS 初始化 el.value
• 想让重置有意义?确保 HTML 的 value 属性确实是你希望的“初始态”
• 多次提交后需清空?重置按钮靠不住,得手动 el.value = ''
React/Vue 等框架里,value 属性受控于 state,不能当普通 HTML 用
在 React 中写 <input value={username} />,这个 value 就是受控组件——它完全由 state 决定,HTML 的 value 属性本身无效。这时候:
• 初始值必须从 state 初始化,不是靠写 value="xxx"
• 用户输入必须配 onChange 更新 state,否则输入框锁死
• 想模拟“缺省值但允许修改”,state 初始值设成你想预填的内容就行
Vue 的 v-model 同理,value 属性会被忽略
立即学习“前端免费学习笔记(深入)”;
实际写的时候,最常漏的是:忘了 reset 行为依赖 HTML 属性而非 JS 赋值,或者在框架里误把受控组件当成原生 input 去操作value 属性。



















