2012-05-01 73 views
-1

我試圖在瀏覽器中執行JavaScript文件,但代碼顯示並未實際執行。我使用的是Firefox,並且確保啓用了JavaScript。我嘗試使用.js擴展名和.shtml,並且都只是顯示代碼。該文件位於我的apache htdocs文件夾中,它的版本爲2.2。javascript將不會執行 - 僅顯示代碼

我試圖運行這個hello世界代碼。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<script type="text/javascript" src="helloworld.js"></script> 
</head> 
<body> 
<p id="hello"></p> 
</body> 
</html> 

這裏的JavaScript的

document.getElementById('hello').innerHTML = 'hello world'; 

有什麼建議?

+10

我們可以看到你的javascript代碼? – thomas

+0

顯示哪些代碼,HTML或js代碼?您將需要更改其MIME類型。如果HTML沒有被解析爲HTML,那麼腳本當然不會被執行。 – Bergi

+0

@tomasz這是我所引用的代碼http://javascript.about.com/od/hintsandtips/a/First-JavaScript-Example.htm – user1104854

回答

1

嘗試這樣的事情

 <html> 
     <head> 
     <script type="text/javascript" src="helloworld.js"></script> 
     </head> 
     <body onload="onload1()"> 
     <p id="hello"></p> 
     </body> 
     </html> 

helloworld.js

 function onload1(){ 
     document.getElementById('hello').innerHTML = 'hello world'; 
     } 
+0

工作完美!我也卸載並重新安裝Apache,以便可能也是如此。無論如何,感謝您的幫助。 – user1104854

+0

阿帕奇聽起來更可能是這裏的問題。很高興你有它排序。 –

3

您沒有ID爲ex的元素。

有了還有你的HTML,你行應爲:

document.getElementById('hello').innerHTML = 'hello world'; 

現在請參閱<p>標籤具有id="hello" - 怎麼會到getElementById('ex')一個電話就能找到嗎?


EDIT

工作JSFiddle example

+0

謝謝,我更新了我的代碼,但它仍然只是顯示HTML和不執行。 – user1104854

+0

描述「顯示」HTML?此外,您將看不到任何「執行」 - 頁面加載的瞬間,它將運行該javascript命令並將這些字符插入到DOM中。我已經使用JSFiddle示例更新了我的答案,該示例向您展示了它的工作原理。 – tkone

+0

它顯示文檔的內容。除了顯示上面代碼框中的HTML之外,它什麼也不做。 – user1104854

-1

保存上述代碼作爲.htm或.html。您的服務器可能未配置爲使用SSI(.shtml擴展名)。

你說你把它保存爲.js和.shtml,這可能是你出錯的地方。 .js文件在由瀏覽器直接打開時不會正確顯示,因爲瀏覽器不打算顯示JavaScipt,因此您必須使用專用於HTML的文件類型。 .shtml擴展名適用於HTML,但僅適用於使用SSI(服務器端包含)的服務器,因此如果服務器不使用SSI,則不起作用。

通常,當mime類型錯誤時您將看到代碼。 MIME類型是服務器如何告訴瀏覽器它正在發送哪種文件http://en.wikipedia.org/wiki/Internet_media_type。服務器發送MIME類型,它通過查看文件擴展名來確定,或者在某些情況下文件的某些部分(以及服務器端代碼也可以調整MIME類型)。服務器將提供.htm和.html擴展名的文件作爲HTML mime類型,但.js不具有該類型。如果服務器使用SSI,.shtml文件只會被賦予HTML MIME類型。所以當瀏覽器獲取這些文件時,它們會以純文本的形式讓它們變得溫順。這就是你看到代碼的原因。

因此,請將擴展名更改爲.htm或.html,或者在服務器上啓用SSI(或確保將其配置爲在該目錄中工作)。

作爲一個方面說明,你的JS不會做任何事情,因爲沒有ID爲'ex'的元素,但是這不應該產生看到代碼的問題。它會給你帶來麻煩。

+0

我更正了'ex'ID。 MIME類型究竟是什麼?對不起,但我是JavaScript新手。 – user1104854

+0

@澤爾的答案不是猜測。如果您需要更多信息,請對原始問題發表評論。僅在答案中提供可靠的事實信息。 – tkone

+0

@tkone這是一個答案,但我看到它在表達這一點時有點差。完全重寫了它+添加了信息/解釋。 – zeel