12

私は次のものを持っています:

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

ご存知かもしれ\nませんが、機能せず、代わりに使用する必要があります<br>.js外部ファイルにリンクしても機能しません。これが私の質問です:

  1. なぜ機能しない\nのですか?
  2. なぜうまく<br>いくのですか?スクリプトタグ内にあるものはすべて、HTMLとJSのダーティミックスではなく、厳密にJavaScriptである必要がありますか?
  3. \nどういうわけか仕事をすることは可能ですか?
  4. \tもうまくいかないことを知っています。HTMLファイル内で機能しない他のものはありますか?
  5. 無関係な質問(これだけのために新しい質問を開きたくありませんでした):vim内からJSスクリプトを試すことができるようにNode.jsをインストールしましたが、このスクリプトを実行すると「document定義されていません」というエラーが表示されます。REPLから試してみると同じことが起こります。何か案は?

同様の質問を検索するとき、私が得たのは、<br>の代わりに使用する必要があるということだけでし\nた。

4

13 に答える 13

19

なぜ機能しない\nのですか?

空白はHTMLの単なる空白だからです。

なぜうまく<br>いくのですか?

改行用のHTMLだから

スクリプトタグ内にあるものはすべて、HTMLとJSのダーティミックスではなく、厳密にJavaScriptである必要がありますか?

それは主観的です。document.write多くの人からも汚いと考えられています。

いつでも使用できcreateElementますcreateTextNode

\nどういうわけか仕事をすることは可能ですか?

<pre>white-space

\tもうまくいかないことを知っています。HTMLファイル内で機能しない他のものはありますか?

HTMLはプレーンテキストではありません。すべての違いを一覧表示するには時間がかかり、StackOverflowの範囲外になります。仕様を読んでみてください。

無関係な質問(これだけのために新しい質問を開きたくありませんでした)

それは完全に無関係です。新しい質問を開きます。

于 2011-04-25T19:52:31.550 に答える
16

私が持っていた:

<div>Hello\nworld</div>

以下のcssをdivクラスに追加しましたが、現在は機能しています。

div {
      white-space: pre-wrap;
  }

これであなたの問題も解決することを願っています。

于 2020-07-26T12:44:54.757 に答える
9

\n動作します。ある種のデバッガー(または同様の開発者ツール)を使用している場合は、ドキュメントソースを確認でき、実際に改行文字があることがわかります。問題は、ページの見方です。ソースを読んでいないので、HTMLドキュメントとして読んでいます。HTMLの空白は、単一のスペースに折りたたまれています。したがって、ソースを変更すると、実際に変更されますが、HTMLドキュメントとして解釈された場合、その変更は表示されません。

Node.jsエラーは、サーバーでブラウザースクリプトを実行していることが原因である可能性があります。つまり、を参照するスクリプトdocumentは、DOMなどがあるブラウザで実行することを目的としています。ただし、汎用ノードプロセスには、ブラウザではないため、このようなグローバルオブジェクトはありません。documentそのため、ブラウザと同じように存在することを前提に呼び出されたグローバルオブジェクトを参照するコードを実行しようとすると、エラーがスローされます。document.write存在しません。画面に書き込みたい場合はconsole.log、他のutil関数を試してみるか調べてください。

于 2011-04-25T19:48:22.827 に答える
4

HTMLがレンダリングされるとき、空白は無視されます。したがって、唯一の方法は改行を使用することです。

<br/>の代わりに使用する\nと、正常に動作します

このdocument.write()関数は、HTMLを要素に書き込みます。

于 2011-04-25T19:42:30.597 に答える
3

ページに書き込むときは、JavaScriptを記述していません。あなたはHTMLを書いています。\ nは、ブラウザのHTMLのレンダリングで改行を作成しない特別な「改行」文字です。HTMLファイル自体に改行が作成されますが、ブラウザはマークアップをレンダリングするときにこれを考慮しません。

したがって、brタグが必要です。

于 2011-04-25T19:41:19.060 に答える
3

HTMLで使用する<pre></pre>と、JSのテキスト形式が尊重されます。

于 2018-08-18T22:13:39.153 に答える
2

htmlタグ<br/>を使用して、行末を入力します(出力はhtmlパーサーによって解釈されます)。次に例を示します。

Javascript:

document.write("Hello<br/>World");
于 2011-04-25T19:41:30.187 に答える
0

JavaScriptによって生成される空白は、HTMLファイル内の他の空白と同じように機能します。それは私には予想される振る舞いのようです。

于 2011-04-25T19:42:28.807 に答える
0

1)\nプレーンテキストファイルで動作します。

2)<br />文字列でHTMLを実行しているため、機能します。文字列は、JSスクリプトの残りの部分を壊すことなく文字を保持できます。

3)そうではありません。おそらく、を使用しているとき<textarea>

4)他のほとんど\*

5)より多くの情報が必要です。

于 2011-04-25T19:44:57.020 に答える
0

1,3。「\n」は機能します。bodyタグ内でdocument.writeを実行すると、document.body.innerHTMLをチェックして、改行が実際に存在することを確認できます。

4. HTML固有のものはすべてHTML固有にレンダリングされるため、たとえばエスケープ<>て入る必要が&lt;あり&gt;ます。

5.documentはブラウザで使用できるオブジェクトですが、DOMが存在しないため、ノードでは使用されません。require("sys");nodejsでsys.printを使用します。

于 2011-04-25T19:49:53.503 に答える
0

documentオブジェクトはHTMLドキュメントを表します。ドキュメントに書き込まれたテキストはすべて、ブラウザのHTMLレンダラーによって処理されます。HTMLでは、改行(たとえば"\n")を含むすべての隣接する空白は、レンダリング時に1つのスペースに折りたたまれます。<br />これが、改行としてレンダリングされるが必要な理由です。\n要素に置き換えるか、要素<br />に書き込むことで、作業を行うことができます。<pre>

こんにちは
世界
于 2011-04-25T19:50:02.810 に答える
-1

実際、あなたのコードは機能しています。Firefoxなどのブラウザコンソールで実行すると、次のように表示されます。

<html><head></head><body>
    <script type="text/javascript">
      document.write('Hello\nWorld')
    </script>Hello
World

</body></html>

分離されているハローとワールドに注意してください。

ただし、HTMLで表示する場合、改行(空白)は省略されます。

「現状のまま」表示するには、次のようにJavaScriptをPREタグで囲むことができます。

<html>
  <body>
    <pre>
    <script type="text/javascript">
      document.write('Hello\nWorld')
    </script>
    </pre>
  </body>
</html>

改行がHTMLに表示されます。

于 2011-04-25T19:51:25.123 に答える
-1

誰もが言うべきことを言っていますが、firebug / chrome Javascriptコンソールを使用している場合は、これを試してください>

console.log("Hello\nWorld");

これが重要な違いです。HTMLで何かを印刷する場合は、HTMLルールが適用されます。他の場所では、改行が機能していることがわかります。

于 2011-04-25T21:16:23.663 に答える