2014-09-12 19 views
0

我有以下JavaScript代碼來根據其長度截斷字符串,並在末尾添加「...」。根據JavaScript中的長度截斷多行文本

var elem = document.createElement('lengthDiv'); 
var text = "text to truncate"; 
elem.style.position = "absolute"; 
elem.style.whiteSpace = "nowrap"; 
elem.style.font = "helvetica"; 
elem.innerHTML = text; 
document.documentElement.appendChild(elem); 
var length = elem.clientWidth; 
if (length > 298) { 
    var i = 1; 
    elem.innerHTML = ''; 
    while (elem.clientWidth < 298 && i < text.length) { 
     elem.innerHTML = text.substr(0, i) + '...'; 
     i++; 
    } 
} 
if (elem.clientWidth < 298 && i > 1) { 
    while (elem.clientWidth < 298) { 
     elem.innerHTML = elem.innerHTML + '.'; 
    } 
} 
var endresult = elem.innerHTML; 

如何讓此代碼適用於單個文本塊,它將影響多行文本? 例如,我想關閉這個:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 

進入這個(大約):

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed... 
Ut enim ad minim veniam, quis nostrud exercitation ullamco l... 
Duis aute irure dolor in reprehenderit in voluptate velit es... 
Excepteur sint occaecat cupidatat non proident, sunt in culp... 

我需要它是與只有JavaScript,不JQuery的或任何其他庫。

+0

我只會從文本的末尾截斷,所以它對用戶來說更容易理解。 – ChaosPandion 2014-09-12 22:01:42

回答

0

我會拆分你的字符串,然後截斷該數組中的每個項目。這會給你截斷的句子。

var res = text.split("."); 

for (i = 0; i < res.length; i++) { 
     // truncate each sentence 
}