简体   繁体   English

如何通过javascript去除段落中的br标签

[英]How to remove br tags from a paragraph through javascript

How can i remove all <br> tags from a paragraph using javascript(only).如何使用 javascript(仅)从段落中删除所有<br>标记。 This is my HTML code from which i'm trying to remove:这是我试图从中删除的HTML代码:

<p>
    Aenean odio dui, facilisis ut convallis in, congue quis mi. Etiam eu tristique metus. Vivamus id orci ac sapien porttitor pulvinar ut et dui. Phasellus porttitor quam dictum magna faucibus sollicitudin ac sit amet lectus.<br>
    <br><br>
    <a href="#"><i class="icon-facebook-sign" style="color:#; font-size:px; "></i></a><br>
    <a href="#"><i class="icon-twitter-sign" style="color:#; font-size:px; "></i></a><br>
    <a href="#"><i class="icon-google-plus-sign" style="color:#; font-size:px; "></i></a><br>
    <a href="#"><i class="icon-phone-sign" style="color:#; font-size:px; "></i></a><br>
    <a href="#"><i class="icon-pinterest-sign" style="color:#; font-size:px; "></i></a>
</p>

I know how to remove it using jquery. But i want to remove it through pure javascript.我知道如何使用 jquery 删除它。但我想通过纯 javascript 删除它。

In jQuery 在jQuery中

$('p').find('br').remove();

JavaScript 的JavaScript

var para=document.getElementById("para").innerHTML;
para = para.replace(/[<]br[^>]*[>]/gi,"");


<p id="para">
    Aenean odio dui, facilisis ut convallis in, congue quis mi. Etiam eu tristique metus. Vivamus id orci ac sapien porttitor pulvinar ut et dui. Phasellus porttitor quam dictum magna faucibus sollicitudin ac sit amet lectus.<br>
    <br><br>
    <a href="#"><i class="icon-facebook-sign" style="color:#; font-size:px; "></i></a><br>
    <a href="#"><i class="icon-twitter-sign" style="color:#; font-size:px; "></i></a><br>
    <a href="#"><i class="icon-google-plus-sign" style="color:#; font-size:px; "></i></a><br>
    <a href="#"><i class="icon-phone-sign" style="color:#; font-size:px; "></i></a><br>
    <a href="#"><i class="icon-pinterest-sign" style="color:#; font-size:px; "></i></a>
</p>

Only for modern browsers (IE8+ should be fine) - use querySelectorAll 仅适用于现代浏览器 (IE8 +应该可以)-使用querySelectorAll

if (document.querySelectorAll) {
    var brs = document.querySelectorAll('p br');
    for (var i = 0; i < brs.length; i++) {
        brs[i].parentNode.removeChild(brs[i]);
    }
}

Demo: Fiddle 演示: 小提琴


Try this for old ones 尝试这个旧的

if (document.querySelectorAll) {
    var brs = document.querySelectorAll('p br');
    for (var i = 0; i < brs.length; i++) {
        brs[i].parentNode.removeChild(brs[i]);
    }
} else {
    var ps = document.getElementsByTagName('p');
    for (var i = 0; i < ps.length; i++) {
        var brs = ps[i].getElementsByTagName('br');
        for (var j = brs.length - 1; j >= 0; j--) {
            brs[j].parentNode.removeChild(brs[j]);
        }
    }
}

Demo: Fiddle 演示: 小提琴

Can you try this, 你可以试试这个吗

 var e = document.getElementsByTagName("p")[0];
 e.innerHTML = e.innerHTML.replace('<br>', '');

demo 演示

The poster wanted a JavaScript only answer. 发布者想要一个仅JavaScript的答案。

var p = document.getElementsByTagName("p")[0];

p.innerHTML = p.innerHTML.replace(/<br>/g, '');

jsFiddle: http://jsfiddle.net/DPqzP/1/ jsFiddle: http : //jsfiddle.net/DPqzP/1/

Warning! 警告!

This will remove all the BR tags. 这将删除所有的BR标签。

docDesc = docDesc.replace(/[<]br[^>]*[>]/gi,"");

Hope this helps :) 希望这可以帮助 :)

This is an alternative. 这是另一种选择。 Might be slow. 可能会变慢。 but still works: 但仍然有效:

var test = document.getElementsByTagName('p').innerHTML;
var new_string = test.split('<br>').join('');
document.getElementsByTagName('p').innerHTML = new_string;

As you shouldn't parse HTML with regex , you have to iterate through all the paragraphs, then iterate through all the elements inside the paragraph and check for BR elements, and remove them. 由于您不应该使用regex解析HTML ,因此必须遍历所有段落,然后遍历该段落内的所有元素并检查BR元素,然后将其删除。

var p = document.getElementsByTagName('p');

for (var i=p.length; i--;) {
    (function it(el){
        if(el){
            if(!el.nodeName || !(/#text/i.test(el.nodeName))){
                if(el.firstChild){
                    it(el.firstChild);
                }
            }

            if(el.nextSibling){
                it(el.nextSibling)
            }
        }
        if (el.tagName && el.tagName.toLowerCase() == 'br') {
            el.parentNode.removeChild(el);
        }
    })(p[i]);
}

FIDDLE 小提琴

Add id/class to p tag so that you can remove br tag only form that p with class/id 将id / class添加到p标签,以便您可以仅删除带有class / id的p的br标签

var pContent = document.getElementById("ID").innerHTML;
var replacedContent = pContent.replace(/<br>/g,"");
document.getElementById('ID').innerHTML = replacedContent;

ID is the id of the p ID是p的id

if you use class then you have to get element by tag name, loop thorough it to match the class, then perform this operation. 如果使用类,则必须按标记名获取元素,将其循环以匹配该类,然后执行此操作。

If you don't want to give id/class you can go with getElementsByTagName 如果您不想提供ID /类,可以使用getElementsByTagName

I think you're hoping to avoid fake paragraphs formed because of <br> .我认为您希望避免因<br>而形成的假段落。 The idea should be to break down the paragraph containing <br> into multiple paragraphs.这个想法应该是将包含<br>的段落分解为多个段落。

let ps = document.getElementsByTagName('p')
let newps =
    ps
    |> Array.collect((p,attrs,children)=>
           let groups = splitbyBr(children)
           groups
           |> Array.map(group => p(attrs,group))
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM