Warum funktionieren JavaScript-Zeilenumbrüche nicht in HTML?

Lesezeit: 4 Minuten

Warum funktionieren JavaScript Zeilenumbruche nicht in HTML
Benutzer723636

Ich habe folgendes:

<html>
  <body>
    <script type="text/javascript">
      document.write('HellonWorld')
    </script>
  </body>
</html>

Wie Sie wahrscheinlich alle wissen, n funktioniert nicht und ich muss verwenden <br> stattdessen. Es funktioniert auch nicht, wenn ich auf eine externe Seite verlinke .js Datei. Hier sind meine Fragen:

  1. Warum nicht n arbeiten?
  2. Warum tut <br> sogar arbeiten? Sollte nicht alles, was in den Skript-Tags enthalten ist, ausschließlich JavaScript sein, anstatt eine schmutzige Mischung aus HTML und JS?
  3. Ist es möglich zu machen n irgendwie funktionieren?
  4. Ich weiss t geht auch nicht. Irgendwelche anderen Dinge, die nicht in HTML-Dateien funktionieren?
  5. Unabhängige Frage (ich wollte dafür keine neue Frage öffnen): Ich habe Node.js installiert, um JS-Skripte von innen heraus ausprobieren zu können, aber wenn ich dieses Skript ausführe, erhalte ich den Fehler “document ist nicht definiert”. Dasselbe passiert, wenn ich es von REPL aus versuche. Irgendwelche Ideen?

Als ich nach ähnlichen Fragen suchte, bekam ich nur, dass ich verwenden sollte <br> anstatt n.

1643325126 148 Warum funktionieren JavaScript Zeilenumbruche nicht in HTML
QUentin

Warum nicht n arbeiten?

Weil White Space in HTML einfach White Space ist.

Warum tut <br> sogar arbeiten?

Weil es das HTML für einen Zeilenumbruch ist

Sollte nicht alles, was in den Skript-Tags enthalten ist, ausschließlich JavaScript sein, anstatt eine schmutzige Mischung aus HTML und JS?

Das ist subjektiv. document.write wird von vielen auch als schmutzig angesehen.

Sie können immer verwenden createElement und createTextNode

Ist es möglich zu machen n irgendwie funktionieren?

<pre>, white-space

Ich weiss t geht auch nicht. Irgendwelche anderen Dinge, die nicht in HTML-Dateien funktionieren?

HTML ist kein reiner Text. Das Auflisten aller Unterschiede wäre zeitaufwändig und würde den Rahmen von Stack Overflow sprengen. Versuchen Sie, die Spezifikation zu lesen.

Unabhängige Frage (ich wollte nur dafür keine neue Frage eröffnen)

Es ist völlig unabhängig. Öffnen Sie eine neue Frage.

Ich hatte:

<div>Hellonworld</div>

Ich habe das folgende CSS hinzugefügt div Klasse und es funktioniert jetzt:

div {
      white-space: pre-wrap;
  }

Ich hoffe, dass dies auch Ihr Problem löst.

Warum funktionieren JavaScript Zeilenumbruche nicht in HTML
David

n funktioniert. Wenn Sie eine Art Debugger (oder ein ähnliches Entwicklertool) haben, können Sie die Dokumentquelle sehen und sehen, dass tatsächlich ein Zeilenumbruchzeichen vorhanden ist. Das Problem ist die Art und Weise, wie Sie die Seite betrachten: Sie sind nicht Wenn Sie seine Quelle lesen, lesen Sie es als HTML-Dokument. Leerzeichen in HTML werden zu einem einzigen Leerzeichen zusammengefasst. Wenn Sie also die Quelle ändern, ändert sie sich tatsächlich, obwohl diese Änderung, wenn sie als HTML-Dokument interpretiert wird, nicht angezeigt wird.

Ihr Node.js-Fehler wird höchstwahrscheinlich dadurch verursacht, dass Sie Browserskripte auf dem Server ausführen. Dh Skripte, die auf die verweisen document sollen in einem Browser ausgeführt werden, wo es ein DOM usw. gibt. Obwohl ein generischer Knotenprozess kein solches globales Objekt hat, weil es kein Browser ist. Wenn Sie also versuchen, Code auszuführen, der auf ein globales Objekt mit dem Namen verweist document Unter der Annahme, dass es genauso wie im Browser existiert, wird es einen Fehler werfen. document.write existiert nicht; Wenn Sie auf den Bildschirm schreiben möchten, versuchen Sie es console.log oder schauen Sie sich die anderen util-Funktionen an.

Beim Rendern von HTML werden Leerzeichen ignoriert. Daher besteht die einzige Möglichkeit darin, Zeilenumbrüche zu verwenden.

Benutzen <br/> anstatt n und es wird gut funktionieren

Der document.write() Funktion schreibt HTML in das Element.

Benutzen <pre></pre> auf dem HTML und es wird das Textformat von JS respektieren.

1643325126 927 Warum funktionieren JavaScript Zeilenumbruche nicht in HTML
BraedenP

Wenn Sie auf der Seite schreiben, schreiben Sie kein JavaScript; Sie schreiben HTML. n ist ein spezielles „Zeilenvorschub“-Zeichen, das keinen Zeilenumbruch in der Darstellung des HTML-Codes durch den Browser erzeugt. Es WIRD einen Zeilenumbruch in der HTML-Datei selbst erstellen, aber der Browser berücksichtigt dies nicht, wenn er das Markup rendert.

Daher ist das br-Tag erforderlich.

Verwenden Sie das HTML-Tag <br/> um Zeilenenden einzugeben (Ihre Ausgabe wird von einem HTML-Parser interpretiert), zum Beispiel:

Javascript:

document.write("Hello<br/>World");

.

666610cookie-checkWarum funktionieren JavaScript-Zeilenumbrüche nicht in HTML?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy