2013-10-17 142 views
-2

得到一個DOM後,一切都很好innerHTML,但我不希望全文被放在div中。從字符串讀取特定行?

function loadXMLDoc() 
{ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     var extractedtext; 
     extractedtext=xmlhttp.responseText; 
     ; 
     document.getElementById("myDiv").innerHTML=extractedtext; 



     } 
    } 
    xmlhttp.open("GET","list2.txt",true); 
    xmlhttp.send(); 
    setInterval (loadXMLDoc, 1000); 
} 

如何在提取的文本中獲取一系列特定行,因爲它是一個巨大的txt文件?

回答

1

indexOf('\n')計數循環,直到你完成它作爲線的次數你想

function getLines(haystack, from, toIncluding) { 
    var i = 0, j = 0; 
    haystack = '\n' + haystack; // makes life easier 
    --from;      // start from "line 1" 
    while (from-->0 && i !== -1) 
     --toIncluding, i = haystack.indexOf('\n', i + 1); 
    if (i === -1) return ''; 
    j = i; 
    while (toIncluding-->0 && j !== -1) 
     j = haystack.indexOf('\n', j + 1); 
    if (j === -1) j = haystack.length; 
    return haystack.slice(i + 1, j); 
} 

var str = '1\n2\n3\n4'; 
getLines(str, 2, 3); // "2\n3" 
getLines(str, 1, 1); // "1" 
getLines(str, 4, 4); // "4" 
getLines(str, 1, 4); // "1\n2\n3\n4" 
+0

'的indexOf()'具有執行'O(N)'通過串掃描。你可以一次完成整個操作(見我的答案)。 –

+0

@MattBall'indexOf'只會從作爲第二個參數傳遞的索引開始掃描(參見[spec](http://es5.github.io/#x15.5.4.7)),所以它會「拾取它離開的地方「。我的'j = i;'這一行也意味着它不會從一開始就找到結尾。 –

+0

啊,你說得對。 –