Entfernen Sie alle Leerzeichen zwischen den tags mit JavaScript
Ich versuche zum entfernen von Leerraum zwischen tags, so dass childNodes enthält nur die tags Knoten nicht die white-space-Knoten zu. Hier ist mein code :
<li>
<label for="firstName" class="mainLabel">First Name : </label>
<input type="text" name="firstName" id="firstName"/>
<span>This must be filled</span>
</li>
Ist hier der JS-code :
var parentHTML = firstName.parentNode.innerHTML;
parentHTML = parentHTML.replace(/>\n</g,"><");
firstName.parentNode.innerHTML = parentHTML;
Aber wenn ich alert parentHTML
ich bekomme die gleiche alte string.
- In einer regex whitespace-Zeichen nicht
\n
es\s
. - Warum sind Sie versuchen zu entfernen, das Leerzeichen auf dem client in JavaScript auf DOM-Knoten, die bereits geleistet (vermutlich)? Der browser ignoriert das Leerzeichen trotzdem. Wenn Sie möchten, senden kompakter HTML an den client müssen Sie es ändern auf der server-Ebene.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist (nicht finden Sie nach der Regel), da Zeichenfolgen unveränderlich sind, denke ich, und Sie setzen der innerHTML des parent-Elements genau die gleiche Zeichenfolge, die Sie abgerufen von früher.
Stattdessen würde ich vorschlagen:
JS Fiddle demo.
Bezug auf den Kommentar von jfriend00 (unten), es scheint der reguläre Ausdruck war das problem, das
\n
hat nicht mit dem gelieferten Muster, wenn das der Fall ist, wird die folgende änderung erfüllt die Anforderungen:JS Fiddle demo.
Referenzen:
.replace()
liefert eine neue Zeichenkette, die zugewiesen werden könnenparentHTML
genau wie die OP war so, was auch immer Thema der OP-code hatte, war es nicht, weil der string Unveränderlichkeit.Für die meisten Fälle empfehle ich das entfernen von Leerzeichen von:
>
Charakter<
CharakterGibt es zwei Fälle, die ich vorstellen kann, wo diese nicht tun, was Sie wollen, und das sind die gleichen zwei Fällen, die Auswirkungen auf die weniger aggressive Lösungen vor.
Leeren Raum zwischen
inline-block
Elemente ist tatsächlich eine beabsichtigte oder erwartete Teil des Layouts. Wenn dieser Abstand minimiert wird, um null-Zeichen, die implizit Raum zwischen den Elementen entfernt. Dies kann vermieden werden, indem Sie meinen regex unten zu ersetzen" "
.Meine ursprüngliche Antwort wurde aktualisiert, um die Leerzeichen beizubehalten, in
<script>
,<style>
,<pre>
oder<textarea>
- tags. Alle diese außer<pre>
sind CDATA-was bedeutet, dass der Inhalt nicht HTML und analysiert werden, bis das End-tag gefunden wird, was bedeutet, dass die regex ist eine komplette Lösung. Wenn ein<pre>
geschachtelt ist oder diewhite-space
CSS-Eigenschaft verwendet, so wird diese nicht bewahren Ihren Inhalt.Die Lösung:
<a>
- tags, das ist wohl nicht vorgesehennur aus Leerzeichen:
neue Zeile, Leerzeichen und Tabulatoren:
https://regex101.com/r/sD7cT8/1
\r\n
ist mehr, wie es statt\n\t
Können Sie behandeln ein html-tag als string in js? Ich denke, es kann getan werden.
versuchen Sie, diese!
<span>Wanted Spaces</span>
Stieß ich auf diesen thread, weil ich war auf der Suche nach einer Lösung, um Lücken zu beseitigen um divs verursacht durch Leerzeichen im HTML-Quelltext, oder, Zeilenumbrüche in meinem Fall.
Bevor ich erkannte, dass der weiße Raum könnte dazu führen, dass diese Lücken, ich wollte Nüsse, die versuchen, um loszuwerden von Ihnen. Ich will meinen HTML-Quelltext formatiert für bessere Lesbarkeit, so komprimieren der code ist nicht für mich eine gute Lösung. Auch wenn ich behandelt es dieser Weg, ist es nicht fix divs generiert werden, die von Google und anderen Anbietern.
Begann ich mit dem erstellen der folgenden Funktion und den Aufruf im body onload.
Diese schien zu funktionieren tadellos, aber leider, es bricht das Google-Suchfeld habe ich in meinem footer.
Nach dem Versuch viele Variationen der regex-Muster, ohne Erfolg, ich fand diese regex-tester bei http://www.regexpal.com/. Ich soweit ich das beurteilen kann, der Folgendes Muster hat, was ich brauche.
Sagte, die Funktion war immer noch brechen das Suchfeld ein. So landete ich Umzug in ein jQuery document ready Funktion. Jetzt funktioniert ' s und nicht brechen das Suchfeld ein.
<script>
tag, dass wurde geändert und Ihre version der regex passiert, um nicht zu zerbrechen.