javascript - 自动调整多个文本区域的高度以适应加载的内容
问题描述
我写了一个 html/php 页面来更新数据库内容。该页面有几个表单(我需要编辑的每个数据库行一个),每个表单都有几个 textarea 字段。
我想使用纯 JavaScript(无 jQuery)将每个 textarea 的高度与其内容(从 db 检索)相匹配。
我发现了以下 JS 函数:
function autoResize() {
this.style.height = 'auto';
this.style.height = this.scrollHeight + 'px';
}
但是如何将它用于页面中的每个 textarea 字段?有没有更好的方法来实现目标?
谢谢!
更新
也许这是一个很好的解决方案:
var els = document.querySelectorAll('textarea');
Array.from(els).forEach((el) => {
var offset = el.offsetHeight - el.clientHeight;
el.style.height = 0;
el.style.height = el.scrollHeight + offset + 'px';
el.addEventListener('input', function() {
el.style.height = el.scrollHeight + offset + 'px';
});
});
能否以更好的方式完成?
解决方案
看看这个片段:
<script>
var content = document.getElementsByClassName('db-content');
for(var i=0; i<content.length; i++){
content[i].style.height = 'auto';
content[i].style.height = content[i].scrollHeight + 'px';
}
</script>
您必须将相同的类应用于所有<textarea>
(db-content
在上面的代码段中)并在它们之后添加此脚本。在脚本中,我们<textarea>
通过类名查找所有这些并将它们存储在一个数组中。接下来我们遍历数组并将样式应用于 all <textarea>
。
推荐阅读
- git - Gitkraken 不理解 gitignore
- tensorflow - 使用tensorflow进行推理时如何规范化参数
- ios - iOS / swift:两行具有相同的出队笔尖和标识符
- gstreamer - gstreamer-1.0 的 ximagesrc 垂直同步
- c# - Ninject:在没有绑定任何东西时忽略注入
- java - 我想启动一个方法或某个进程并保持 100 毫秒,然后在 android 中重新开始
- mongodb - 每次测试前 Mocha MongoDB 清理收集
- javascript - 使用 jQuery 自动完成 devbridge 更改 onSelect 事件的查询
- asp.net-mvc - 无法将相同的实体(具有不同的相关属性实体)插入另一个实体
- javascript - LinkedList - 创建函数,该函数接受一个值,创建一个节点,并将其添加到列表末尾