Javascript 添加空白,留下HTML标记

Javascript 添加空白,留下HTML标记,javascript,jquery,text,Javascript,Jquery,Text,我有一个字符串,我想检查它是否有超过或等于15个字符的单词。如果是这样,用空格将该单词拆分为5个字符,然后返回带拆分单词的相同字符串 我的代码可以工作,但问题是我的字符串也可能包含HTML标记,我不想碰它们 function space_that(_e){ var w = []; var t = $(_e).text(); w = t.split(" "); for(var s in w) if(w[s].length >= 15)

我有一个字符串,我想检查它是否有超过或等于15个字符的单词。如果是这样,用空格将该单词拆分为5个字符,然后返回带拆分单词的相同字符串

我的代码可以工作,但问题是我的字符串也可能包含HTML标记,我不想碰它们

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");

    for(var s in w)
        if(w[s].length >= 15)
            w[s] = w[s].substr(0,10) + " ";

    $(_e).text(w.join(" "));

    return true;

}

只需检查该部分是否以an=15开头 &&w[s]。子字符串(0,1)!="") w[s]=w[s].substr(0,10)+'; } $(_e).text(w.join(“”); 返回true; } 编辑:更正错误(旧答案仅影响html标记)并添加了开始和结束标记的检查

以下版本适用于内部有空格的标记

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");
    var inTag = false;

    for(var s in w) {
        if(w[s].substring(0, 1) == "<") inTag = true;
        if(w[s].substring(w[s].length-1, 1) == ">") inTag = false;
        if(inTag) continue;
        if(w[s].length >= 15 
           && w[s].substring(w[s].length-1, 1) != ">")
            w[s] = w[s].substr(0,10) + " ";
    }

    $(_e).text(w.join(" "));

    return true;

}
函数空间{
var w=[];
var t=$(_e).text();
w=t.分割(“”);
var inTag=假;
对于(w中的var s){
如果(w[s]。子字符串(0,1)==“”)inTag=false;
如果(inTag)继续;
如果(w[s]。长度>=15
&&w[s]。子字符串(w[s]。长度-1,1!=“>”)
w[s]=w[s].substr(0,10)+';
}
$(_e).text(w.join(“”);
返回true;
}

只需检查该部分是否以an=15开头 &&w[s]。子字符串(0,1)!="") w[s]=w[s].substr(0,10)+'; } $(_e).text(w.join(“”); 返回true; } 编辑:更正错误(旧答案仅影响html标记)并添加了开始和结束标记的检查

以下版本适用于内部有空格的标记

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");
    var inTag = false;

    for(var s in w) {
        if(w[s].substring(0, 1) == "<") inTag = true;
        if(w[s].substring(w[s].length-1, 1) == ">") inTag = false;
        if(inTag) continue;
        if(w[s].length >= 15 
           && w[s].substring(w[s].length-1, 1) != ">")
            w[s] = w[s].substr(0,10) + " ";
    }

    $(_e).text(w.join(" "));

    return true;

}
函数空间{
var w=[];
var t=$(_e).text();
w=t.分割(“”);
var inTag=假;
对于(w中的var s){
如果(w[s]。子字符串(0,1)==“”)inTag=false;
如果(inTag)继续;
如果(w[s]。长度>=15
&&w[s]。子字符串(w[s]。长度-1,1!=“>”)
w[s]=w[s].substr(0,10)+';
}
$(_e).text(w.join(“”);
返回true;
}

这真的很好,我想最好检查它是否以标记打开和标记关闭开始和结束,但无论如何,这可以解决99%的问题,因此如果没有更好的解决方法,我将接受您的回答。现在它也检查关闭“>”。我必须补充一点,您仍然对标记有问题,如
,因为href=“foo”部分不会被忽略。为此,您需要一个我无法提供的更复杂的解决方案(应该使用regex)添加了一个版本,该版本支持带有空格的标记。这真的很好,我想最好检查它是否以标记打开和标记关闭开始和结束,但无论如何,这可以解决99%的问题,因此如果你做不到更好的话,我将接受你的回答。它现在也会检查关闭“>”。我必须补充的是,你仍然有像
这样的标签问题,因为href=“foo”部分不会被忽略。为此,您需要一个我无法提供的更复杂的解决方案(应该使用regex)添加了一个版本,该版本支持带有空格的标记。