CSS solution
If you want to disable the effect of multiple <br> on a page, you can do this using CSS without using JavaScript:
br + br { display: none; }
However, this method is ideal when you work with tags, something like this:
<div>Text</div><br /><br /><br /> <div>Text</div><br /><br /><br /> <div>Text</div><br /><br /><br />
In other cases, for example:
Hello World<br /> <br /> Hello World<br /> <br /> Hello World<br /> <br />
It will fail (as CSS passes text nodes). Use a JavaScript solution instead.
Javascript solution
// It better to wait for document ready instead of window.onload(). window.onload = function () { // Get all `br` tags, defined needed variables var br = document.getElementsByTagName('br'), l = br.length, i = 0, nextelem, elemname, include; // Loop through tags for (i; i < l - 1; i++) { // This flag indentify we should hide the next element or not include = false; // Getting next element nextelem = br[i].nextSibling; // Getting element name elemname = nextelem.nodeName.toLowerCase(); // If element name is `br`, set the flag as true. if (elemname == 'br') { include = true; } // If element name is `#text`, we face text node else if (elemname == '#text') { // If text node is only white space, we must pass it. // This is because of something like this: `<br /> <br />` if (! nextelem.data.replace(/\s+/g, '').length) { nextelem = br[i+1]; include = true; } } // If the element is flagged as true, hide it if (include) { nextelem.style.display = 'none'; } } };
user1823761 Jun 12 '13 at 9:26 a.m. 2013-06-12 09:26
source share