【问题标题】:Remove first and last <br /> from string从字符串中删除第一个和最后一个 <br />
【发布时间】:2013-12-12 04:20:42
【问题描述】:
我有这个 html 代码:
<p id="demo">Visit <br /> stackoverflow <br /> or jsfiddle <br /></p>
<button onclick="myFunction()">Try it</button>
function myFunction()
{
var str = document.getElementById("demo").innerHTML;
var res = str.replace("<br />","");
document.getElementById("demo").innerHTML=res;
}
我想从中删除第一个和最后一个 <br />,而不是全部。
这是我的 jsfiddle http://jsfiddle.net/3W83m/
【问题讨论】:
标签:
javascript
html
dom
replace
【解决方案1】:
如果您确定第一个和最后一个元素子元素是br,您可以尝试这种方式:否则您可以循环测试第一个和最后一个 br 并删除它们。
function myFunction() {
var elem= document.getElementById("demo");
elem.removeChild(elem.firstElementChild);
elem.removeChild(elem.lastElementChild);
}
Demo
如果第一个/最后一个不是 BR,为了确保它只删除第一个和最后一个 br,而不是任何其他元素,您可以添加一个简单的安全检查。
function myFunction() {
var elem= document.getElementById("demo"),
fChild = elem.firstElementChild,
lChild =elem.lastElementChild;
if(fChild.tagName === "BR")
elem.removeChild(fChild);
if(lChild.tagName === "BR")
elem.removeChild(lChild);
}
【解决方案2】:
这是您提出的一般问题的解决方案:
var arr = str.split(/<br\s*\/?>/);
var res = arr[0]+arr.slice(1,-1).join('<br>')+arr.slice(-1);
这个答案不需要第一个和最后一个孩子是<br>。
如果您只想在末尾删除<br>,那么很容易:
var res = str.replace(/^\s*<br\s*\/?>|<br\s*\/?>\s*$/g,'');
Demonstration
【解决方案3】:
第一个<br/>:
if (myString.indexOf('<br/>') > 0) {
myString = myString.slice(myString.indexOf('<br/>')+5, myString.length);
}
最后<br/>:
if (myString.lastIndexOf('<br/>') == myString.length - 5) {
myString = myString.slice(0, -4);
}