2016-09-09 65 views
0

我想修剪html標籤中的文本,並將結果再次粘貼到這些標籤中。這不是DOM內容,只有字符串。如何從標籤,trimm中將文本粘貼到javascript中的標籤

var string = "<div class='someClass'><b>Some very long text</b></div>" 

通緝的結果是:f.e

var string = "<div class='someClass'><b>Some very lon</b></div>" 

我發現圖書館striptags,但它不僅擺脫掉標籤,但我想留住他們。

如果您有任何解決方案,請讓我知道:)

UPDATE:

感謝建議大家。有幾件事需要補充:1.我從來沒有關於html標籤的信息,因爲它來自羽毛筆文本編輯器,我需要某種正則表達式。在我的工作中,沒有jQuery,它有點'邪惡':P。 3.我使用的反應,所以任何使用「文件」或「窗口」是不必要在這裏:(。

+0

如果你考慮使用庫,爲什麼不使用jQuery?並使用$ .html()方法:http://api.jquery.com/html/ –

回答

0

如果結構是確切像你表現<div class='someClass'><b>Some very long text</b></div>,你可以用正則表達式這樣做是爲了查找的文字,並在功能改變它,你怎麼樣,縮短(SUBSTR)/ 修剪/...:

var longText ="<div class='someClass'><b>Some very long text</b></div>"; 
 

 
const MAX_LENGTH = 13; 
 

 
// regex expression matches the structure given 
 
var shortText = longText.replace(/(<div[^>]+><b>)([^<]+)(?=<\/b><\/div>)/gi, function(m1,m2,m3){ 
 
// m2 matches "<div class='someClass'><b>" 
 
// m3 matches "Some very long" 
 
return m2 + m3.substr(0, MAX_LENGTH).trim(); 
 
}) 
 
console.info(shortText)

這裏是一些文件,以替換功能https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

「製冷機」另類:
如果傳遞的HTML元素應該改變,這種功能的短checkChildren,所有兒童Textnodes將被修改,trimsubstr,... (這是一個有點矯枉過正,檢查每一個節點,如果你知道最終的結構,但我只是想測試一下):

var elem = document.getElementById("test"); 
 
//define the max length of text nodes 
 
const MAX_LENGTH = 13; 
 

 
checkChildren(elem); 
 

 
// check all children from parent element an limit the size of textNodes 
 
function checkChildren(parent){ 
 
    for(var i=0; i<parent.childNodes.length;i++){ 
 
    var child = parent.childNodes[i]; 
 
    switch(child.nodeType){ 
 
     case Node.ELEMENT_NODE: 
 
     // recursive call 
 
     checkChildren(child); 
 
     break; 
 
     case Node.TEXT_NODE: 
 
     // modify textNode (Shorten and trim) 
 
     child.nodeValue = child.nodeValue.substr(0,MAX_LENGTH).trim(); 
 
     break; 
 
    } 
 
    } 
 
}
<div id="test" class='someClass'><b>Some very long text</b></div>

0

您可以在操縱字符串的地方使用隱藏標記。喜歡的東西 <div id="tags-modifier" ></div> 然後jQuery的喜歡像

var string = "<div class='someClass'><b>Some very long text</b><b>Test2213213213213</b></div>" 
$("#tags-modifier").html(string); 
var part= 5; 
$.each($('#tags-modifier *:not(:has("*"))'), function(){ 
    mytext=$(this).html() 
    $(this).html(mytext.substring(0, part)) 
}) 
string = $("#tags-modifier").html(); 

這個工程即使有多個兄弟姐妹

小提琴here

0

您可以使用$ .parseHTML這個字符串轉換成DOM樹。從此dom樹中獲取<b>節點,並在substr的幫助下更改文本。

相關問題