Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得字符串的前X个字符,丢弃标记的长度,但保留标记?_Javascript_Html_Tags_Mootools_String Length - Fatal编程技术网

Javascript 如何获得字符串的前X个字符,丢弃标记的长度,但保留标记?

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

所以,我想知道现在的情况。基本上,我有一个函数,它将字符串作为输入,剪切前100个字符,生成“…更多”链接,其余的文本被隐藏。 现在的问题是字符串可以包含文本格式标记,这些标记被处理并影响文本(如粗体、斜体等),问题是我希望,比方说,前30个字符显示如下:

    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);
    });
}