问题描述
我写了一个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>
并将它们存储在数组中。接下来,我们遍历数组并将样式应用于所有<textarea>
。