2011-04-25 77 views
4

所以,我有以下幾點:爲什麼javascript換行符不能在html中工作?

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

正如你可能都知道\ n沒有工作,我不得不使用< BR>代替。 如果我鏈接到一個外部js文件,它將不起作用。這裏是我的問題:

1)爲什麼\n沒有工作?
2)爲什麼<即使工作?腳本 標籤中的所有內容不應該是嚴格的JavaScript,而不是html和js之間的混合組合?
3)是否有可能讓\n工作?
4)我知道\t也不起作用。 html文件裏面不會有任何其他內容?
5)無關的問題(我不想爲此打開一個新的問題)。 我安裝了node.js,以便能夠在vim中嘗試使用js腳本,但是在運行此腳本時,我得到了「文檔未定義」的錯誤信息 。同樣的事情發生時,我試圖從repl。有任何想法嗎?

順便說一句,我知道這些問題可能已經被要求一百萬次,但老實說,我找不到很好的答案,我的一切是我應該用&lt;br>而不是\n。謝謝你的幫助。

回答

4

\n工作,如果你有一個排序調試器(或類似的開發工具),你可以看到文檔來源,你會看到確實有一個換行符。問題在於你看頁面的方式 - 你是而不是閱讀它的源代碼,你正在閱讀它作爲一個HTML文檔。 html中的空格被壓縮到一個空格中。所以,當你改變源代碼時,它確實會改變,儘管當被解釋爲html文檔時,該改變沒有被顯示。

您的node.js錯誤很可能是由於您在服務器上運行瀏覽器腳本的事實造成的。即引用document的腳本旨在在瀏覽器中運行,其中存在DOM等。儘管通用節點進程沒有這樣的全局對象,因爲它不是瀏覽器。因此,當您嘗試運行引用名爲document的全局對象的代碼時,假設它存在就像在瀏覽器中一樣,它會引發錯誤。 document.write不存在,如果要寫入屏幕,請嘗試console.log或查看其他util功能。

1

當你寫入頁面時,你不寫JavaScript;你正在寫HTML。 \ n是一個特殊的「換行」字符,它不會在瀏覽器呈現HTML時創建換行符。它會在HTML文件本身中創建換行符,但瀏覽器在呈現標記時不會考慮這一點。

因此,br標籤是必需的。

1

使用HTML標籤<br/>輸入行結尾(您的輸出由HTML解析器解釋),例如:

的Javascript:

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

空白由JavaScript發出就像其他任何空白你的HTML文件。這似乎是我的預期行爲。

3

當HTML呈現時,它會忽略空白。因此唯一的方法是使用換行符。

使用<br/>而不是\n,它會正常工作

document.write()功能寫入到HTML元素。

0

1)\n在純文本文件中工作。

2)<br />的工作原理是因爲您在字符串中進行HTML操作。字符串可以保留字符而不會破壞JS腳本的其餘部分。

3)不是。也許當你使用<textarea>秒。

4)大多數其他\*

5)需要更多的信息。

0

1,3。 「\ n」確實有效。如果你在body標籤內部做一個document.write,你可以檢查document.body.innerHTML並看到換行符確實存在。

4.任何特定的HTML都會呈現HTML特定的,因此您必須將<>轉義爲&lt;&gt;

5. document是瀏覽器中可用的對象,由於DOM不存在,所以不用於節點。 require("sys");並在nodejs中使用sys.print。

0

document object代表一個HTML文檔;寫入文檔的任何文本都將由瀏覽器的HTML呈現器進行處理。在HTML中,所有相鄰的空格(包括換行符(例如"\n"))在渲染時會摺疊到一個空格中。這就是爲什麼你需要<br />,這是呈現爲換行符。您可以通過使用<br />替換它或通過寫一個<pre>元素使\n工作:

Hello 
World
0

其實你的代碼的作品。當您在Firefox等瀏覽器控制檯上運行它時,它會向您顯示:

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

</body></html> 

關於分隔的Hello和World的注意事項。

但是,當顯示在HTML上時,換行符(空格)將被忽略。

要顯示「現況」,你可以圍繞JavaScript和PRE標籤,如:

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

您將獲得顯示在你的HTML斷行。

10

爲什麼不工作?

因爲白色空間只是HTML中的空白區域。

爲什麼<br>甚至可以工作?

因爲它是一個換行符

不應該一切的腳本標記內部嚴格的JavaScript而不是HTML和JS之間的骯髒組合的HTML?

這是主觀的。 document.write也被很多人認爲是骯髒的。

您可以隨時使用createElementcreateTextNode

是否有可能使\ N功不知何故?

prewhite-space

我知道\ t也不起作用。任何其他的東西,不會在HTML文件內工作?

HTML不是純文本。列出所有的差異會很耗時,並且超出了StackOverflow的範圍。嘗試閱讀規範。

無關的問題(我不想爲此打開一個新問題)。

它是完全無關的。打開一個新問題。

0

大家說這是什麼可說的,但在情況下,如果你正在使用螢火蟲/鍍鉻的Javascript控制檯..then試試這個>

console.log("Hello\nWorld");

這是最關鍵的區別。當您使用HTML打印某些內容時,將應用HTML規則。在其他地方,你可以看到這條線斷裂的工作。

相關問題