1

<div>タグに次のコードがあるとします。

<div id="something"><br /> <br />Hello<br />World<br><br />   </div>

trimJS 側で空白と HTML の改行をすべて削除して、次のような結果が得られるようにするにはどうすればよいでしょうか。

<div id="something">Hello<br />World</div>
4

2 に答える 2

3

<br />文字列の最初と最後にあるスペースとノードを削除するには、

x = x.replace(/^( |<br \/>)*(.*?)( |<br \/>)*$/,"$2");

innerHTMLただし、これをdiv 要素のに適用する必要があります。

于 2012-09-17T12:24:29.017 に答える
1

正規表現を置き換えると、次のようになります

return html.replace(/\s*(<br ?\/>\s*)+/g, "<br />").replace(/^<br \/>|<br \/>$/g, "");

DOM では、div のすべての子をループし、空の空白と連続するbr要素を削除する必要があります。

var el = document.getElementById("something");
for (var i=0, remove=true; i<el.childNodes.length; ) {
    var child = el.childNodes[i];
    if (child.nodeType == 3 && child.isElementContentWhitespace)
        el.removeChild(child);
    else if (child.nodeType == 1) {
        if (child.nodeName.toLowercase() == "br" && remove)
            el.removeChild(child);
        else
            // run DOM tree recursively?
        remove = true;
    } else {
       remove = false;
       i++;
    }
}
if (el.lastChild.nodeType == 1 && el.lastChild.nodeName.toLowercase() == "br")
    el.removeChild(el.lastChild);
于 2012-09-17T12:11:46.323 に答える