从textarea删除顶行的最新(和快速)方法

neu*_*ino 3 javascript jquery textarea

我有一个显示最后一个网页,1000通过AJAX日志文件的行然后更新每x秒钟加载新的内容(如果有的话),并追加到textarea的使用$('#log').append(new_data),排序的tail -f.

一段时间后,如果添加太多行并且页面变慢或无响应,则会出现问题.

所以我想限制行数,比如5000,所以这意味着我应该:

  • 取回 new_data
  • 计算 overflow = 5000 - lines_ in_new_data - lines_in_textarea
  • 如果从textarea中overflow > 0删除第一overflow
  • 将new_data附加到textarea

在我的脑海里,这涉及一个或多个split('\n')两者的textareanew_data值,则使用数组的长度和切片,但我想如果有一个整洁的或更好的方式来做到这一点.

And*_*y E 8

您应该能够使用单个split,然后join截断数据,如下所示:

// on data retrieved
var total = ((textarea.value 
              ? textarea.value + "\n" 
              : "") 
          + new_data).split("\n");

if (total.length > 10) 
    total = total.slice(total.length - 10);

textarea.value = total.join("\n");
Run Code Online (Sandbox Code Playgroud)

工作示例:http://jsfiddle.net/ArvQ7/(为简洁而减少到10行)