我的javascript和html文件名为contents.js和page.html:
function sayHello() {
alert("Hello World")
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript" src="contents.js" ></script>
<script>
window.onload = sayHello();
</script>
</body>
</html>
运行时,没有调用sayHello函数。在firefox的控制台中,它返回错误:
-SyntaxError:期望的表达式,得到'&lt;' contents.js:1
ReferenceError:sayHello未定义
两个文件都保存在同一个文件夹中。我在eclipse中使用node.js表达项目来创建服务器:
var http = require('http'),
fs = require('fs');
fs.readFile('./page.html', function (err, html) {
if (err) {
throw err;
}
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(8888);
});
为什么我无法从page.html文件中调用contents.js文件中的'sayHello'函数?
答案 0 :(得分:2)
代码
window.onload = sayHello();
... 调用 sayHello
并将其返回值分配给window.onload
,与x = foo()
调用的方式完全相同 {{1并将其返回值分配给foo
。
要仅指定函数引用,请不要调用它(删除x
):
()
旁注:窗口window.onload = sayHello;
事件发生在页面加载周期的最后阶段,仅在加载所有其他资源(包括所有图像)之后。大多数情况下,您希望更早地运行代码。如果是这样,只需将其放在HTML中 end 所包含的load
标记中,就在结束script
标记之前。
答案 1 :(得分:1)
执行sayHello(),你不会返回任何材料,所以它没有被执行。如果sayHello
返回了一个函数,它就会调用onload。
var sayHello = (function() {
return function {
alert("Hello World")
};
})();
在这种情况下,可以使用sayHello()作为返回函数。
window.onload = sayHello;
function sayHello() {
alert("Hello World")
}
&#13;
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript" src="contents.js"></script>
</body>
</html>
&#13;
答案 2 :(得分:-1)
将它放在body标签内。
non_centrality = n*(mu/sig)**2