我有这部分代码:
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都有唯一的。
答案 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;
我不太了解你的要求,但我希望这会有所帮助
答案 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";
}
答案 3 :(得分:0)
您可以使用document.getElementsByClassName('class_name')
(如果您的textAreas有一个公共类)或document.getElementsByTagName('tag_name')
。这些函数返回一个NodeList
对象,但您可以将其视为DOM元素数组,您可以在其中使用style
属性。像其他人所说的那样,在所有这些元素上设置样式属性的最快方法是使用for循环(或更好的foreach循环)。