Javascript 如何获得字符串的前X个字符,丢弃标记的长度,但保留标记?
所以,我想知道现在的情况。基本上,我有一个函数,它将字符串作为输入,剪切前100个字符,生成“…更多”链接,其余的文本被隐藏。 现在的问题是字符串可以包含文本格式标记,这些标记被处理并影响文本(如粗体、斜体等),问题是我希望,比方说,前30个字符显示如下:Javascript 如何获得字符串的前X个字符,丢弃标记的长度,但保留标记?,javascript,html,tags,mootools,string-length,Javascript,Html,Tags,Mootools,String Length,所以,我想知道现在的情况。基本上,我有一个函数,它将字符串作为输入,剪切前100个字符,生成“…更多”链接,其余的文本被隐藏。 现在的问题是字符串可以包含文本格式标记,这些标记被处理并影响文本(如粗体、斜体等),问题是我希望,比方说,前30个字符显示如下: This is a text to be displayed...More 但是如果有,比如说,em标签,我得到的是: <em>This is</em> a text to be d...More
This is a text to be displayed...More
但是如果有,比如说,em标签,我得到的是:
<em>This is</em> a text to be d...More
我的代码现在看起来像这样(使用MooTools):
p.each(功能(mel){
var t=mel.get('html');//获取p的所有内容
var str=t;//复制字符串
var div=new Element('div',{html:str});//这个函数去除标记,但不知道它在这里是否有用
var text=div.textContent | | div.innerText | |“”;
文本;
如果(改为text.lengthcss?示例:.css文本溢出文档:使用idea@ant建议您可以这样做:使css隐藏内容,并使用MooTools/JS创建链接,并在新元素/标记中附加类似…More
的内容。这样css隐藏原始内容,并在同级元素中获得所需的链接。Tha我知道我想的方向错了,现在可以了
*This is* a text to be d...More
p.each(function(mel){
var t = mel.get('html'); //get all the content of p
var str = t; //duplicate the string
var div = new Element('div', {html:str}); //this function strips tags though don't know if it's useful here
var text = div.textContent || div.innerText || "";
text;
if (text.length<100) return;
var tOne = t.substr(0,100); //breaking text on visible and non-visible
var tTwo = t.substr(101,t.length); //all the further code works creating "More" after 100 characters
var dots = new Element('span', {
'class':'unedit',
'text':'...'
});
var more = new Element('a', {
href: '#',
'class':'more unedit',
'text':'More'
});
var unseen = new Element('span', {
'class':'appended',
'html':tTwo,
styles: {
'display':'none',
}
})
var less = new Element('a', {
href: '#',
'class':'less unedit',
'text':'Less'
})
unseen.grab(new Element('br'));
unseen.grab(less);
mel.set('html', tOne);
mel.grab(dots);
mel.grab(more);
mel.grab(unseen);
});
}