-1

我试图在我的浏览器中执行一个 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';

有什么建议么?

4

3 回答 3

3

您没有 ID 为 的元素ex

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

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

现在看到该<p>标签具有id="hello"- 调用如何getElementById('ex')能够找到它?


编辑

工作JSFiddle 示例

于 2012-05-01T12:47:41.700 回答
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';
        }
于 2012-05-01T13:13:37.183 回答
-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”的元素,但这不应该产生查看代码的问题。然而,它会给你带来麻烦。

于 2012-05-01T12:52:07.623 回答