2016-04-13 31 views
3

Metin alanında görüntülenen büyük bir dizilim var. Dize \ n kullanarak satırlara ayrılır. Program çalışırken diziye sürekli yeni satırlar eklenir.Dizenin sonuna X satırları ekleyerek, aynı sayıda satırı baştan kaldırın

Programın yavaşlamasını veya tarayıcıyı kilitlemesini engellemek için, hiçbir zaman 10 k'dan fazla metin satırı göstermemek istiyorum. Bunu yapmak için, dize başlangıcından sonuna kadar silmek istediğim satırları silmek istiyorum. Bunu nasıl yapabilirim?

Ör:

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

Sonra dize Tıpkı dizenin sonuna kadar baştan satırları hareketli DEĞİL am netleştirmek için veri

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

3 yeni hatlar ile güncellenir. Sonuna kadar tamamen farklı çizgiler ekliyorum ve başlangıçtaki aynı sayıda satırı kaldıracağım.

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

Bu büyük bir anlaşma değil. Lütfen kodunuzu yazınız. Daha sonra – Mojtaba

+1

Yeni satırlara bölme yapabiliriz ve – adeneo

+0

dizisinin başlangıcından itibaren diğer yanıtlarda önerildiği gibi bölme ve ilk 3 girişi ekleme işleminden ayrı olarak geçiş yapabiliriz, çünkü 10k satırınız varsa sadece string.replace (/ (. * \ n) {3} /, '') '- 3 kullanımı için daha uygun olun - 3 satır miktarı – maioman

cevap

1

bu deneyin:

Şu anda bu var

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

Örneğin, yeni çizgileri eklemeden önce kaldırma işlemini yapabilirsiniz. Böyle şey:

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

Ancak, kodunuzu olması daha iyidir. Sonra belki de daha iyi bir yol vardı

İlgili konular