textarea初始值须写在标签内,读写内容用value属性;rows/cols仅表建议行数列数,尺寸由css控制;maxlength按unicode计数,required对空白符无效;placeholder在ie9-不支持,换行符提交时编码为%0a。

textarea 的初始值必须写在开始和结束标签之间,不是靠 value 属性设置:<textarea>默认文字</textarea>。用 value 属性设初始值是无效的(只对 input 有效)。
怎么正确读写内容?别碰 innerHTML 和 textContent
所有浏览器中唯一可靠、始终同步用户输入的方式是操作 value 属性:
- 读取:直接用
el.value,它包含当前全部文本(含换行符\n) - 写入:赋值
el.value = '新内容',不要用el.innerHTML = '...',否则换行会被破坏,光标位置也可能错乱 - 清空:
el.value = '',不是el.innerHTML = '' - 监听变化:用
input事件(实时响应),不是change(只在失焦时触发)
rows 和 cols 还是 CSS 控制尺寸?
rows 和 cols 是 HTML 原生属性,语义明确——表示“建议显示多少行/列”,但不控制实际宽高;CSS 的 height/width 才真正决定渲染尺寸。混用容易冲突:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 如果只设
rows="5",浏览器按字体行高推算高度,但可能被 CSS 覆盖 - 如果同时设
rows="5"和style="height: 100px;",后者优先,rows只影响初始渲染逻辑(比如是否出现滚动条) - 自适应高度场景下,
rows可作为最小行数兜底(如rows="3"),再配合 JS 动态改style.height
maxlength 和 required 的坑在哪?
这两个属性看似简单,但行为有隐蔽差异:
-
maxlength="200"按 Unicode 字符计数(不是字节),支持中文,但 IE9–10 对其支持不完整;后端必须二次校验,前端限制可被绕过 -
required把纯空格 + 换行("\n \t")当作“已填写”,会通过验证;真实业务中需手动补if (!el.value.trim()) -
placeholder在 IE9 及更早版本完全不显示,且无法用 CSS 伪元素模拟;必须用 JS 在focus/blur时切换value
最易被忽略的是换行符处理:HTML 中换行用 \n,但表单提交时会被编码为 %0A;后端若用空格分割或未正确 URL 解码,会导致数据断裂。别假设 value 里的 \n 提交后还是 \n。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










