[英]javascript won't execute - only displays code
我正在嘗試在瀏覽器中執行一個javascript文件,但是該代碼已顯示並且並未實際執行。 我正在使用firefox,並確保已啟用javascript。 我嘗試使用.js擴展名和.shtml,兩者都只顯示代碼。 該文件位於我的apache htdocs文件夾中,它的版本為2.2。
我正在嘗試運行此世界代碼。
<!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';
有什么建議么?
您沒有ID為ex
元素。
使用顯示的HTML,您的行應為:
document.getElementById('hello').innerHTML = 'hello world';
現在看到<p>
標記具有id="hello"
-調用getElementById('ex')
怎么能找到它?
嘗試這樣的事情
<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';
}
將上面的代碼另存為.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'的元素,但是這不會產生看到代碼的問題。 但是,它將給您帶來麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.