在Javascript中删除span后连接字符串?

时间:2014-07-17 12:31:35

标签: javascript html ios uiwebview

我有一个删除我之前在xhtml中插入的跨度的函数。

我的问题是,当它删除跨度时,它不会将它包含的字符串与其周围的字符串连接。

例如,我从:

开始
<p class="s6">
<span class="myClass">The</span>
" quick brown fox jumps over the lazy dog." 
</p>

然后当我删除跨度时,我得到了

<p class="s6">
"The"
" quick brown fox jumps over the lazy dog."
</p>

我想要这个:

<p class="s6">
"The quick brown fox jumps over the lazy dog."
</p>

我正在使用的代码是:

spansToRemove[i].parentNode.replaceChild(document.createTextNode(spansToRemove[i].innerHTML), spansToRemove[i]);

我注意到如果我保存并重新打开xhtml文件,它会变成我想要的版本,但这看起来很不好看。由于我通常不是一个javascript程序员,我不知道这是正常的行为,还是处理它的适当方式是什么?

&#34; createTextNode&#34;在我的代码看起来很可疑,但我找不到任何其他有用的替换它。

我不喜欢它现在如何做的原因是它影响了我能够自由选择文本的能力。

这是在iOS应用中的UIWebview中发生的。 Javascript不是JQuery。

感谢

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此正则表达式

/<span[^\>]+>|<\/?span>|\r?\n|\r|\s{2,}|\t{2,}/gi

简单用法:

// JavaScript
window.onload = function(){
    document.getElementById("button").onclick = function(){
        var html = document.body.innerHTML;
        html = html.replace(/<span[^\>]+>|<\/?span>|\r?\n|\r|\s{2,}|\t{2,}/gi, '');
        document.body.innerHTML = html;
    };
};

<!-- HTML -->
<body>
    <p class="s6">
        <span class="myClass">The</span>
        quick brown fox jumps over the lazy dog.
    </p>
    <p class="s6">
        <span class="myClass">The</span>
        quick brown fox jumps over the lazy <span style="font-weight:bold;">dog</span>.
    </p>
    <input type="button" name="button" id="button" value="Remove SPANs">
</body>