Entfernen Sie jeden Leerraum zwischen den Tags mithilfe von JavaScript

7

Ich versuche, Leerraum zwischen den Tags zu entfernen, so dass childNodes nur diese Tag-Knoten und nicht auch die White-Space-Knoten enthalten. Hier ist mein Code:

%Vor%

Und hier ist der JS-Code:

%Vor%

Aber wenn ich parentHTML alarmiere, bekomme ich die gleiche alte Zeichenfolge.

    
Rafael Adel 17.08.2012, 23:37
quelle

5 Antworten

15

Es ist (nicht, siehe nach der Regel), weil Strings unveränderlich sind, denke ich, und Sie setzen das innerHTML des übergeordneten Elements auf genau die gleiche Zeichenfolge, die Sie zuvor von ihm abgerufen haben.

Stattdessen würde ich vorschlagen:

%Vor%

JS Fiddle-Demo .

In Bezug auf den Kommentar von jfriend00 (unten) scheint der reguläre Ausdruck das Problem gewesen zu sein, das \n stimmt nicht mit dem gelieferten Muster überein, daher erfüllt die folgende Änderung die Anforderungen:

> %Vor%

JS Fiddle-Demo .

Referenzen:

David Thomas 17.08.2012, 23:41
quelle
10

nur Leerzeichen:

%Vor%

neue Zeile, Tabulatoren und Leerzeichen:

%Vor%

Ссылка

    
Joeri 09.04.2013 09:35
quelle
8

In den meisten Fällen empfehle ich, Leerzeichen von:

zu entfernen
  • Anfang des Dokuments
  • Ende des Dokuments
  • Nach > character
  • Vor < character

Es gibt zwei Fälle, an die ich denken kann, wo dies nicht das bringt, was Sie wollen, und dies sind die gleichen zwei Fälle, die sich auf die weniger aggressiven Lösungen auswirken.

  • Der leere Bereich zwischen inline-block elements ist eigentlich ein beabsichtigter oder erwarteter Teil des Layouts. Wenn dieser Bereich auf null Zeichen reduziert ist, wird der implizite Abstand zwischen den Elementen entfernt. Dies kann vermieden werden, indem meine Regex unten durch " " ersetzt wird.

  • Meine ursprüngliche Antwort wurde aktualisiert, um Leerzeichen in <script> , <style> , <pre> oder <textarea> tags beizubehalten. Alle außer <pre> sind CDATA, was bedeutet, dass der Inhalt kein HTML ist und solange geparst wird, bis das schließende Tag gefunden wird, was bedeutet, dass die Regex eine vollständige Lösung ist. Wenn ein <pre> verschachtelt ist oder die white-space CSS-Eigenschaft verwendet wird, wird dadurch Ihr Inhalt nicht beibehalten.

Die Lösung:

%Vor%     
Adam Leggett 13.10.2016 16:45
quelle
4

Können Sie ein HTML-Tag als String in js behandeln? Ich denke, es kann getan werden. versuch das!

%Vor%     
ln2khanal 17.08.2012 23:44
quelle
0

Ich bin auf diesen Thread gestoßen, weil ich nach einer Lösung suchte, um Lücken um divs zu beseitigen, die durch Leerzeichen in der HTML-Quelle oder Zeilenumbrüche in meinem Fall verursacht werden.

Bevor ich erkannte, dass Leerraum diese Lücken verursachen konnte, war ich verrückt geworden, um sie loszuwerden. Ich möchte meine HTML-Quelle für die Lesbarkeit formatiert halten, daher ist die Komprimierung des Codes keine gute Lösung für mich. Auch wenn ich es so behandle, behebt es nicht divs, die von Google und anderen Anbietern generiert werden.

Ich habe damit begonnen, die folgende Funktion zu erstellen und sie in body onload aufzurufen.

%Vor%

Dies schien perfekt zu funktionieren, aber leider bricht es das Google-Suchfeld, das ich in meiner Fußzeile habe.

Nachdem ich viele Variationen des Regex-Musters ohne Erfolg ausprobiert hatte, fand ich diesen Regex-Tester bei Ссылка . Soweit ich sagen kann, tut das folgende Muster, was ich brauche.

%Vor%

Das heißt, die Funktion brach immer noch das Suchfeld. Also habe ich es in eine jQuery Document Ready-Funktion umgewandelt. Jetzt funktioniert es und bricht das Suchfeld nicht.

%Vor%     
MFM 11.02.2017 17:32
quelle

Tags und Links