2011-03-15 57 views
0

比方說,我有一個文本:的Html - html插入<p></p>標籤

<p> hello world! </p> 

,我使用剪切文本後5個字,並增加了一個功能「...顯示更多」

我想要的結果是這樣的:

喂...顯示更多

因爲<p>標籤我所得到的是這樣的輸出:

喂...顯示更多

我所看到的,當我檢查的元素是這樣的:

<p> hello </p> ...show more 

我必須提到,文本可以與<p>或沒有。

有沒有辦法解決這個問題? 有沒有辦法在<p>標籤內插入添加的文字? 我需要提一下,我需要<p>標籤,我不能使用strip tags功能。

感謝, 雅美

+0

你如何插入文本? JavaScript的? – 2011-03-15 16:33:50

+1

,你想怎麼做? PHP的功能,JavaScript,jQuery的東西?您必須編寫更好的問題才能獲得更好的答案 – AlfaTeK 2011-03-15 16:34:01

+0

PHP與您的問題有什麼關係? – LostLin 2011-03-15 16:35:44

回答

0
$('p').text($('p').text().replace('world!', '... show more')); 
+3

這是幽默還是一個非常糟糕的答案?;-) – Capsule 2011-03-15 16:41:35

+0

@Capsule - 如果有什麼不對,請指出... wud幫助大家從錯誤中學習... – Avi 2011-03-16 09:19:23

+1

我想這不是幽默,然後;-)你的方法是特定於這個例子,它不是通用的。你真的認爲要取代的文字永遠是「Hello world!」嗎? – Capsule 2011-03-16 12:44:47

1

你的意思呢?

var text = "<p>hello world</p>"; 
var res = "<p>" + text.substring(3, 8) + " ...show more</p>"; 

它導致:

<p>hello ...show more</p> 
1

我看到它的方式,你有兩個選擇:

  • .split()字符串用空格(假設一個空格隔開的話),然後切片第一(最多)5個元素。如果有超過5個元素,請添加「...閱讀更多」;如果沒有,這是沒有必要的。
  • 你可以使用一些正則表達式替換和(帶有負向前視)忽略前5個單詞,但用你的「......更多」替換所有其他文本。 (我個人覺得這一個有更多的開銷,但你也許可以用(?!(?:[^\b]+?[\b\s]+?){5})(.*)$爲圖案)

話雖如此,這裏就是我的意思是一個字符串分割:

function readMore(el){ 
    var ary = el.innerHTML.split(' '); 
    el.innerHTML = (ary.length > 5 ? ary.slice(0,5).join(' ') + '... read more' : ary.join(' ')); 
} 

var p = document.getElementById('foo'); 
readMore(p); 

假設當然,對於這個演示的目的,<p id="foo">Hello, world! How are you today?</p>(這將導致<p id="foo">Hello, world! How are you...read more</p>