我有一个显示在文本区域的大字符串。使用\ 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"
});
答案 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>'));
但是,拥有代码会更好。那么,也许有更好的方式