自动调整textarea的大小?

时间:2017-06-29 11:46:02

标签: javascript

我有这部分代码:

let o = document.getElementById("name");
        let a  = document.getElementById('customerstype');
        let p = document.getElementById("parent");
        let h  = document.getElementById('hierarchy');
        let s  = document.getElementById('status');
        o.style.height = (o.scrollHeight - 10)+"px";
        a.style.height = (a.scrollHeight - 10)+"px";
        p.style.height = (p.scrollHeight - 10)+"px";
        h.style.height = (h.scrollHeight - 10)+"px";
        s.style.height = (s.scrollHeight - 10)+"px";

对于每个textarea,我需要说document.getElementyById。有没有其他方法可以做到这一点,没有10行代码,但每个textarea都有唯一的。

4 个答案:

答案 0 :(得分:1)

您可以使用类,然后使用for循环遍历所有元素:

var elements = document.querySelectorAll('.txtarea'); // Assuming class txtarea
elements.forEach(function(elem) {
    elem.style.height = (elem.scrollHeight - 10) + 'px';
});

答案 1 :(得分:1)



function check(t){ 
  t.style.height = (t.scrollHeight - 10)+"px";
}

textarea{
  height: 200px;
}

<textarea id="name" onkeydown="check(this)"></textarea>
<textarea id="customerstype" onkeydown="check(this)"></textarea>
<textarea id="parent" onkeydown="check(this)"></textarea>
<textarea id="hierarchy" onkeydown="check(this)"></textarea>
<textarea id="status" onkeydown="check(this)"></textarea>
&#13;
&#13;
&#13;

我不太了解你的要求,但我希望这会有所帮助

答案 2 :(得分:0)

像我在评论中提到的那样使用类 -

<textarea id="name" class="myTextArea"></textarea>
<textarea id="customerstype" class="myTextArea"></textarea>
<textarea id="parent" class="myTextArea"></textarea>
<textarea id="hierarchy" class="myTextArea"></textarea>

循环通过类元素 -

let o = document.getElementsByClassName("myTextArea");
for(var ele in o){
    o[ele].style.height = (o.scrollHeight - 10)+"px";
}

小提琴 - https://jsfiddle.net/cr5ss9L0/

答案 3 :(得分:0)

您可以使用document.getElementsByClassName('class_name')(如果您的textAreas有一个公共类)或document.getElementsByTagName('tag_name')。这些函数返回一个NodeList对象,但您可以将其视为DOM元素数组,您可以在其中使用style属性。像其他人所说的那样,在所有这些元素上设置样式属性的最快方法是使用for循环(或更好的foreach循环)。