Javascript 调整textarea的大小以适合所有内容
我正在尝试调整文本区域的大小,以尽可能紧密地适应其中的内容。以下是我目前的努力:Javascript 调整textarea的大小以适合所有内容,javascript,Javascript,我正在尝试调整文本区域的大小,以尽可能紧密地适应其中的内容。以下是我目前的努力: function resizeTextarea(t) { a = t.value.split('\n'); b = 1; for (x = 0; x < a.length; x++) { c = a[x].length; if (c >= 75) b += Math.ceiling(c/75); } b += a.length; t.rows = b; } 函数resizeTe
function resizeTextarea(t) {
a = t.value.split('\n');
b = 1;
for (x = 0; x < a.length; x++) {
c = a[x].length;
if (c >= 75) b += Math.ceiling(c/75);
}
b += a.length;
t.rows = b;
}
函数resizeTextarea(t){
a=t.value.split('\n');
b=1;
对于(x=0;x=75)b+=数学上限(c/75);
}
b+=a.长度;
t、 行=b;
}
这项工作相当不错,但当用户通过填充宽度将文本“推”到下一行时,似乎失败了。(注意:此处使用的75表示我的文本区域的宽度(以字符为单位)
还有一个奇怪的效果,[enter][key]使textarea超过文本末尾2行,然后下一个[key]将其恢复到预期的额外一行。如果代码失败,我尝试将c设置为2,因为没有Math.天花()这样的方法,而是调用它 除此之外 函数中的所有变量都是全局变量。这不是一个好的做法-您应该始终在变量声明中添加
var
关键字,使变量成为该函数的私有变量-否则您可能会意外地修改某些全局变量,并导致真正糟糕的事情发生。用于检查代码是否存在类似问题
将文本区域的宽度硬编码到函数中也是不好的。这样,您就不能对其他可能具有不同宽度的文本区域使用调整大小功能。在当前情况下,最好从textarea的cols
属性动态读取宽度
将变量重命名为比a、b、c更有意义的变量也会大大提高可读性
例如:
function resizeTextarea(textarea) {
var lines = textarea.value.split('\n');
var width = textarea.cols;
var height = 1;
for (var i = 0; i < lines.length; i++) {
var linelength = lines[i].length;
if (linelength >= width) {
height += Math.ceil(linelength / width);
}
}
height += lines.length;
textarea.rows = height;
}
函数resizeTextarea(textarea){
变量行=textarea.value.split('\n');
变量宽度=textarea.cols;
var高度=1;
对于(变量i=0;iTriptych指出,我建议你也研究一下SO post的答案。exact dupe:我在修改我在网上找到的一个函数。我最近刚试着从地板换到天花板。