Javascript 计数文本区域行,显示,增加,减少

Javascript 计数文本区域行,显示,增加,减少,javascript,html,rows,Javascript,Html,Rows,我正在尝试使用纯javascript计算textarea行,我不确定为什么我的选择器。rows未返回正确的行数:( 这是我的js: var selector = document.querySelectorAll("textarea"); for(i = 0; i < selector.length; i++){ var array = selector[i]; var count = array.rows; console.log(array, count);

我正在尝试使用纯javascript计算textarea行,我不确定为什么我的
选择器。rows
未返回正确的行数:( 这是我的js:

var selector = document.querySelectorAll("textarea");

for(i = 0; i < selector.length; i++){
   var array = selector[i];
   var count = array.rows;
   console.log(array, count);
   if(count > 1 &&  count.scrollHeight < count.offsetHeight){
       count--
       console.log(array.rows);
   }else{
       count++
       console.log(array.rows);
   }
}
var选择器=document.querySelectorAll(“textarea”);
对于(i=0;i1&&count.scrollHeight

上面的代码工作正常,因为它被设计为返回
文本框
显示的行数(
文本区域
的属性
)。但是您需要
文本区域
内的文本占用的行数,下面是一个解决方案:

  • 获取文本区域的
    高度
    (我使用了
    getComputedStyle()
    ,因为高度没有定义)
  • 计算
    文本区域中内容的
    行高度(=高度/行)
  • 获取
    文本区域的
    滚动高度
  • 通过将
    滚动高度
    除以计算的
    行高度
    来计算行数
  • 应该是这样的:

    var选择器=document.querySelectorAll(“textarea”);
    对于(i=0;i”;
    }//结束于
    
    知识产权是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德。
    在《太阳报》中,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报,没有一本《太阳报》,没有一本《太阳报,没有一本《太阳报》,没有一本《太阳报,没有一本《太阳报》,没有一本《太阳报》,没有一本《太阳报。
    你好
    
    它在chrome中工作。@Grimbode Nope,不工作……是否要获取文本框的行数?或者文本框中的文本占用的行数?您的代码在第一个(至少)文本区域中运行良好(返回属性
    rows
    的值)该代码中有一个错误:变量
    count
    是一个数字,而不是一个对象/元素。您不能对其应用
    scrollHeight
    offsetHeight
    ,它将为这些值返回
    undefined
    。这将使条件始终通过
    else
    。您应该使用
    数组
    变量:
    array.scrollHeight
    array.offsetHeight
    很好。我找到了一个解决方案,并将其作为一个答案来写。我将简短地发布它。我添加了
    Math.round()
    以消除上面代码中计算的不正确小数(JSFiddle示例没有它,并且没有它会得到一个整数)