2015-12-02 77 views
0

我製作了一段代碼,需要在特定數量的新行或單詞後進行分頁。我建立了一個數組,告訴我它應該在哪裏切入我的元素。正如你可以在我的jsFiddle中看到的,你可以看到一個console.log();,表明我需要剪切文本。從數組中插入特定字符串後的分頁符javascript

我想獲得關於如何創建一個關閉</div>插入在我的array()特定字符串後面的幫助。我想有一個結束</div>和創造的新<div>

更多細節有關代碼

// $(this) 
$(this) = $('.c_84'); 

的HTML例子

<div class=" onerow counting_1"><div class="newDiv"></div> 
    <div class="onefield c_6937"> 
     <!-- This is where I want to generate the new divs --> 
     <table class="textarea" cellspacing="0" cellpadding="0"> 
     <tbody> 
     <tr> 
      <td class="value"><!-- Content String --></td> 
     </tr> 
     </tbody> 
     </table> 
    </div> 
</div> 

這裏是我的代碼邏輯至今。

// The class c_6937 is the class test in my jsFiddle 
// I did this just to remove extra html and focus on the problem 

// Start 
$(this).find('.c_6937').parent().prepend('<div class="newDiv">'); 
var countReqNumberOfPages = newChunk.length; 
for (var key in newChunk) { 
    // If we find the first chunk, insert </div><div class="newDiv"> after it. 
} 

// End 
$(this).find('.c_6937').parent().append('</div>'); 

難道是可以運行str_replace函數(我的陣列中)()函數,並使用完全相同的字符串和關閉的div替換當前字符串?


編輯1:我在爲更好地理解這一問題的代碼添加額外的意見,並增加了一個可能的解決方案。

+0

後,你可以一些更具體的,就像你在哪裏得到newChunk,到哪是與類c_6937,您在哪裏如何元素正在使用你的代碼邏輯?如果您分享HTML和初始化腳本的方式會更好。 – Snm

+0

@Snm:如果您檢查jsFiddle腳本,您可以看到我有包含字符串的

。我需要將這個字符串分解爲帶有參數的頁面。 我編輯的帖子是更具體。 –

+0

我可能是錯的,但我不認爲你可以預先設定一個div的開頭部分,然後只是div的關閉部分。我認爲HTML字符串參數需要完整的***和***有效的html。 – War10ck

回答

1

我不知道你是否有這樣的事情

<script type="text/javascript"> 

var wordsPerLine = 15; 
var minWordsPerLine = 5; 
var linesPerPage = 30; 
var linesToStopAfter = []; 


function checkForDot(pos,masterArray){ 
    if(pos < 0){ 

    return false; 
    } 
    var line = masterArray[pos]; 
    if(line.indexOf('.') !== -1){ 
    return line; 
    } 
    else{ 

    return checkForDot(pos-1,masterArray); 
    } 
} 

function chunk(lines) { 

    var masterLines = []; 
    for (i = 0; i < lines.length; i++) { 

     var sentence = []; 
     var wordsList = lines[i].split(" "); 
     var wordCount = 0; 
     for (j = 0; j < wordsList.length; j++) { 

     if(wordCount >= wordsPerLine){ 

      wordCount = 0; 
      masterLines.push(sentence.join(" ")); 
      sentence = []; 
      sentence.push(wordsList[j]); 
     } 
     else{ 

      sentence.push(wordsList[j]); 
     } 

     wordCount++;   
     } 

     masterLines.push(sentence.join(" "));   
    } 

    return masterLines 
} 

$(document).ready(function() 
{ 
    var html = $("#test").html(); 
    $("#test").html('<div class="newDiv">'+html+'</div>'); 
    var lines = chunk($("#test").text().split("\n")); 
    var count = 0; 
    for (k = 0; k < lines.length; k++) { 
     count++; 
     if(count >= linesPerPage){ 
     count = 0; 
     linesToStopAfter.push(checkForDot(k,lines)); 
     } 
    } 

    for(j=0; j<linesToStopAfter.length;j++) 
    { 
     toreplace = $("#test").html().replace(linesToStopAfter[j], linesToStopAfter[j]+"</div><div class='newDiv'>"); 
     $("#test").html(toreplace) 
    } 
    cleanedhtml = $("#test").html().replace(/<\s*div[^>]*><\s*\/\s*div>/g,""); 
    $("#test").html(cleanedhtml) 
}); 

</script> 
+0

希望你可以把它帶進你的html – Snm

+0

乍一看,我看起來不錯!我把這段代碼放在jsFiddle中,它看起來好像可以工作。謝謝Snm,我可能會繼續從那裏繼續。祝你今天愉快。 –

+0

謝謝,如果這是你尋找的邏輯,請接受答案 – Snm

相關問題