将X行添加到字符串的末尾,从开头删除相同数量的行

时间:2016-04-13 20:54:04

标签: javascript jquery html

我有一个显示在文本区域的大字符串。使用\ n将字符串分隔为行。在程序运行时,新行将不断附加到字符串中。

为了防止程序速度减慢或浏览器崩溃,我希望永远不会显示超过10k行的文本。为此,我想从字符串的开头删除但是我添加到结尾的行数很多。我怎么能这样做?

例如:

line 1
line 2
line 3
line 4
line 5
...
line 9,999
line 10,000

然后用3个新的数据行更新字符串

line 4
line 5
...
line 9,999
line 10,000
line 10,001
line 10,002
line 10,003

只是为了澄清我不是从字符串的开头到结尾移动行。我在最后添加完全不同的行,并从头开始删除相同数量的行。

我目前有这个:

function(addedText){
//prevent updating/refresh textarea with blank strings
if(addedText.length !== 0){}
    //"#log-data" is an HTML textarea that displays all the text 
    //that is appended to it each time this function runs

    x = number of lines in addedText

    //Add addedText to the textarea
    $("#log-data").append(addedText);

    REMOVE x lines from start of "#log-data"
});

2 个答案:

答案 0 :(得分:1)

试试这个:

var text = jQuery("#textarea_id").val().split("\n");

var x = number of lines in addedText //Taken from question

for(var i=0; i < x; i++) {
  text.shift();
  text.push(addedText[i]); //Hoping addedText is array(if not, can be passed as array by converting it using split);
}

jQuery("#textarea_id").val(text.join('\n'));

答案 1 :(得分:1)

例如,您可以在追加新行之前执行删除过程。 像这样:

totalLines = $("#log-data").html().split('<br>');
totalLines.splice(0,x);
$("#log-data").html(totalLines.join('<br>'));

但是,拥有代码会更好。那么,也许有更好的方式