Javascript新手:为什么价值不打印出来?

时间:2011-04-24 11:36:22

标签: javascript

我刚刚开始学习JavaScript,并且有一个我无法理解的问题。

我有一个像这样的HTML文件:

<html>
<head>
    <script language="javascript" src="test.js" />
    <!-- <script></script> -->
</head>
<body>
</body>
</html>

我的test.js是这样的:

document.writeln("test");

奇怪的是,我没有在网页上看到字符串“test”。在我删除HTML文件中注释掉的代码行之前,它不会打印。

此外,当我尝试将<script></script>替换为<script/>时,也没有输出。

这里的问题是为什么代码<script></script>与输出有关?

测试是在Chrome 10和IE 9上完成的。

3 个答案:

答案 0 :(得分:3)

这可能是在黑暗中拍摄,但尝试更换:

<script language="javascript" src="test.js" />

使用:

<script language="javascript" src="test.js"></script>

我过去曾经对浏览器感到挑剔,并且在前一种情况下没有正确导入JavaScript。从技术上讲,标签是自动关闭的,但实际上预计会有一个结束标签。

编辑关注@David Dorward的评论,我做了一些搜索规范。我不知道您的页面使用的是哪个版本的HTML,但它可能作为text/html提供,并被大多数浏览器解释为HTML 4.01。 (纠正我,如果我在这个问题上错了,我对HTML版本并不十分精通。)

有很多关于script标记here的内容,有趣的是,所有示例(无论是嵌入式脚本还是引用的脚本文件)都提供了结束标记。在XHTML 1规范中,更多的挖掘出现了this注释。它基本上表明,如果一个标签意味着有内容而且恰好是空的,那么它仍然需要用完整的结束标签关闭。此script元素 在技术上是空的。它引用了一个外部脚本,但它没有包含该外部脚本。

现在,这些是不同的规格。但是他们的DTD hereherescript元素非常相似。比较它们,比如brhr元素,它们指定它们是空的,而script元素则不是。{1}}元素。

答案 1 :(得分:1)

首先,您未正确转义<script>标记。确实,你做到了,但你在这一行评论了它:

<!-- <script></script> -->

那一行应该是:

</script>

接下来,如果您想测试您的脚本是否有效,请使用alert("your text"),然后您会看到一个弹出窗口。

查看结果的最佳方式是使用console.log("your log text"),您将在Chrome的控制台中看到您的调试信息。如果您安装了Firebug并且可能安装了Safari,这也适用于Firefox,虽然我没有亲自使用它。

答案 2 :(得分:1)

<script>需要有一个单独的结束标记

<script language="javascript" src="test.js"></script>