簡體   English   中英

JavaScript無法執行-僅顯示代碼

[英]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')怎么能找到它?


編輯

工作JSFiddle示例

嘗試這樣的事情

        <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM