在外部JavaScript文件中的函数。我做错了什么?

3

我是javascript的新手,我正在尝试运行以下代码:

<html>
<head>
    <script type="text/javascript" src="script.js">
    </script>
</head>
<body>
    <input type="button" onclick="popup()" value="Click Me!" />
</body>
</html>

script.js:

function popup() {
    alert("Hello World")
}

script.js文件与html文件在同一目录中,但是当我点击按钮时,代码却没有执行。


请注意,您的script.js文件不应包含在内。查看此链接http://jsfiddle.net/F2865/...您的代码运行良好。 - Kyle
使用您的浏览器Javascript控制台(例如Firefox中的shift-ctrl-J)查看是否有任何错误。 - Marc B
我刚刚也在和这个问题斗争了一段时间。我的问题是一个简单的拼写错误。除此之外,你的代码看起来很好。我刚刚检查了分号的问题。我把它们全部去掉了,但它仍然很好用(不过我还是会把它们加回去的)。确保你的文件在同一个目录下。这样,<script> 就能正确链接。同时,在浏览器中打开你的 JavaScript 控制台。这对我追踪 html/js 有所帮助。 - Noah Herron
5个回答

2
你的函数中的alert()和调用函数的代码都需要使用;来结尾。因此,
<html>
<head>
<script type="text/javascript" src="script.js" />
</head>
<body>
    <input type="button" onclick="popup();" value="Click Me!" />
</body>
</html>

script.js:

function popup() {
    alert("Hello World");
}

将以下与编程有关的内容从英语翻译成中文。只返回已翻译的文本:不包括函数调用和警报调用。 函数调用和警报调用 - Fantius
@Fantius,是的,那就是我所说的。 - smartcaveman
分号是不必要的(尽管它们当然是推荐的)。 - Lightness Races in Orbit
@Tomalak,也就是Jim Morrison,这取决于浏览器。 - smartcaveman
@Tomalak,我理解你的感受。但是如果这样的话,我将会回答更少的SO问题。 - smartcaveman

0
<html>
<head>
    <script type="text/javascript" src="button.js">
    </script>
</head>
<body>
    <input type="button" onclick="popup();" value="Click Me!" />
</body>
</html>

你刚才漏掉了一个分号


我不是JavaScript大师,我只是在我的网站上使用它来完成一些工作,请解释一下。 - Vamsi Krishna B
2
它们是什么?它们不是必需的;就这么简单。 (这并不意味着它们不被推荐。 它们是。它们只与 OP 的问题无关。) - Lightness Races in Orbit

0
<html>
<head>
    <script type="text/javascript">
        function popup() { alert('lol'); }
    </script>
</head>
<body>
    <input type="button" onclick="popup();" value="Click Me!" />
</body>
</html>

像这样就可以了,检查您的路径是否正确。


0

只有在想要将代码合并到一行时才需要分号

alert("Hello World");alert("Hello World");

我复制并粘贴了您的完整代码,它对我来说运行良好。 唯一的解释是您的script.js文件中有另一个函数出现错误。
或者您的文本文件中有一个奇怪的字符,浏览器不知道该怎么处理。
删除所有空格和制表符,然后再试一次。


0

你的代码在我的电脑上可以运行,所以我认为你可能有一个错误的文件名。如果你使用的是Windows系统,请记住Windows会隐藏文件的扩展名,因此你可能会得到一个名为script.js.txt而不是script.js的文件。
检查确切的文件名。
另外,尝试使用ggregoire的代码,看看是否有弹出窗口拦截器或类似的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接