直接上代码: 方案一: 枫芸志 » 文本框textarea高度自适应增长/伸缩 textarea { height:100px; width: 300px; } 晴枫制作 http://jb51.net // 最小高度 var minHeight = 100; // 最大高度,超过则出现滚动条 var maxHeight = 300; function ResizeTextarea(){ var t = document.getElementById('txtContent'); h = t.scrollHeight; h = h > minHeight ? h : minHeight; h = h > maxHeight ? maxHeight : h; t.style.height = h + "px"; } [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 方案一在各浏览器中,文本框随内容自适应增长都没有问题;但在删除内容时收缩方面表现有所差异,IE、Opera表现正常,Firefox、Chrome、Safari不会收缩。原因是文本框内容高度小于文本框高度时scrollHeight值等于文本框高度,而不是文本框内容高度。 方案二: 复制代码 代码如下: 枫芸志 » 文本框textarea高度自适应增长/伸缩 Textarea高度随内容自适应地增长,无滚动条 晴枫制作 http://jb51.net <BR>// 最小高度 <BR>var minRows = 5; <BR>// 最大高度,超过则出现滚动条 <BR>var maxRows = 12; <BR>function ResizeTextarea(){ <BR>var t = document.getElementById('txtContent'); <BR>if (t.scrollTop == 0) t.scrollTop=1; <BR>while (t.scrollTop == 0){ <BR>if (t.rows > minRows) <BR>t.rows--; <BR>else <BR>break; <BR>t.scrollTop = 1; <BR>if (t.rows < maxRows) <BR>t.style.overflowY = "hidden"; <BR>if (t.scrollTop > 0){ <BR>t.rows++; <BR>break; <BR>} <BR>} <BR>while(t.scrollTop > 0){ <BR>if (t.rows < maxRows){ <BR>t.rows++; <BR>if (t.scrollTop == 0) t.scrollTop=1; <BR>} <BR>else{ <BR>t.style.overflowY = "auto"; <BR>break; <BR>} <BR>} <BR>} <BR> 方案二在各浏览器中表现相同,皆可使文本框随内容自适应增长和收缩。但有个缺憾是在文本框高度增长的时候,文本框显示会有一个跳动。 另以上两个方案对于通过文本框右键菜单选择剪切、粘贴、删除等命令操作文本内容的情形都无效。可以说暂未找到完美的解决方案,留待以后再来研究。哪位同学如果有完美的方案的话敬请赐教! 其他方案: A different approach to elastic textareas 方案二即参考此文后实现 Build an Elastic Textarea with Ext JS Smart TextArea: scrollHeight in IE, Firefox, Opera and Safari 原文链接:http://witmax.cn/javascript-textarea-auto-grow.html