2014-09-21 47 views
6

我有一個非常簡單的HTML和JavaScript。我違反了一些JavaScript規則嗎?

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script> 
     function goodbye() { 
     document.write ("good bye"); 
     } 
     goodbye(); 
    </script> 
</body> 
</html> 

結果顯示一個Hello和再見字符串。我感動再見功能,以它自己的文件「goodbye.js」所以,我的第一個HTML現在看起來是這樣

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script src='goodbye.js'> 
     goodbye(); 
    </script> 
</body> 
</html> 

現在,如果我再次運行HTML,它只顯示你好。我原本沒想到。發生了什麼 ?

+0

。其內容應該是空的。你需要另一個腳本塊來引用這個函數再見 – 2014-09-21 14:03:37

+0

啊,我看到了很多謝謝。 – tadpole 2014-09-21 14:05:34

+0

是的,你用'document.write'。這是一個不成文的規定,你不應該這樣做。 – 2014-09-21 14:15:45

回答

13

這是W3C specification說:

腳本可以在SCRIPT元素內容內外部文件中定義。如果未設置src屬性,則用戶代理必須將元素的內容解釋爲腳本。如果src具有URI值,則用戶代理必須忽略元素的內容並通過URI檢索腳本。

所以叫goodbye()正確的做法是第一個與src屬性後,再增加一項script標籤。

+0

+1規範 – Seiyria 2014-09-21 18:38:26

+0

+1引用規範 – Brandon 2014-09-21 18:55:02

3

我相信你需要兩個腳本標籤。與src的一個應該是空的,因爲它的內容是由src定義和您的在線goodbye();被忽略。製作第二個標籤,其中src用於goodbye的嵌入式調用。

2

當您添加src屬性<script>標籤瀏覽器會忽略其下的所有內容。所以,你需要添加額外的<script>標籤:

<script src='goodbye.js'></script> 
<script> 
    goodbye(); 
</script> 
2

你沒有得到使用腳本元素下載一個腳本,並把它作爲一個嵌入式腳本。

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script src='goodbye.js'></script> 
    <script> 
     goodbye(); 
    </script> 
</body> 
</html> 

或者,您可以添加再見();打電話給goodbye.js結束。

2

你不能有src屬性加文字內容到script元素。如果有src屬性,則將使用該屬性,並忽略文本內容。

<script src='goodbye.js'></script> 
<script>goodbye();</script> 
當你包括外部js文件使用腳本標記
相關問題