javascript将不会执行 - 仅显示代码

时间:2012-05-01 12:39:38

标签: javascript html

我正在尝试在浏览器中执行javascript文件,但代码已显示且未实际执行。我正在使用Firefox,我确保启用了javascript。我尝试使用.js扩展名和.shtml,只显示代码。该文件位于我的apache htdocs文件夹中,它的版本为2.2。

我正在尝试运行这个hello world代码。

<!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';

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您没有ID为ex的元素。

使用您显示的HTML,您的行应该是:

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

现在看<p>标记包含id="hello" - 如何调用getElementById('ex')能够找到该标记?

<小时/> 的修改

工作JSFiddle example

答案 1 :(得分: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';
        }

答案 2 :(得分:-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类型)。服务器将为.mtm和.html扩展名提供HTML mime类型的文件,但.js将不具有该类型。如果服务器使用SSI,则.shtml文件将仅被赋予HTML mime类型。因此,当浏览器获取这些文件时,它会将它们作为纯文本进行操作。这就是你看到代码的原因。

因此,要么将扩展名更改为.htm或.html,要么在服务器上启用SSI(或确保将其配置为在该目录中工作)。

作为旁注,你的JS不会做任何事情,因为没有ID为'ex'的元素,但这不会产生看到代码的问题。但是它会给你带来麻烦。