调用JavaScript函数从HTML文件

问题描述:

我的JavaScript和HTML文件名为contents.js和page.html中:调用JavaScript函数从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:预计表达,得到了 '<' contents.js:1周

的ReferenceError:sayHello的是没有定义

这两个文件都保存在同一文件夹中。而我使用的是Node.js的快递项目在Eclipse中创建服务器:

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); 
 
});

为什么我无法从调用“sayHello的”功能在contents.js文件page.html文件?

+2

'window.onload = sayHello();'将'sayHello'的返回值赋给'window.onload'。你回来了什么? – Teemu

+0

您忘了使用触发事件。像'onload'或'onpageshow'。 –

执行sayHello(),你不返回任何东西,所以它没有执行。如果sayHello已经返回一个函数,它会调用onload。

var sayHello = (function() { 
    return function { 
    alert("Hello World") 
    }; 
})(); 

在这种情况下,可能会使用sayHello()作为其返回函数。

window.onload = sayHello; 
 

 
function sayHello() { 
 
    alert("Hello World") 
 
}
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
</head> 
 

 
<body> 
 
    <script type="text/javascript" src="contents.js"></script> 
 

 
</body> 
 

 

 
</html>

+1

请添加说明。只是代码不会帮助任何人。 – Li357

+1

嘿@AndrewL。感谢您指出,我正要更新它。我希望你能重新考虑你的意见。兄弟会下一次兄弟会! – Ayan

+0

我试过这个,引用错误现在没有了,但我仍然得到:SyntaxError:期望的表达式,得到' user2562530

把它的body标签像这里面。

<body onload="sayHello()"></body> 

代码

window.onload = sayHello(); 

... 电话sayHello并指定其返回值window.onload,完全相同的方式x = foo()电话foo,并指定其返回值x

要只是分配函数参考,不把它(删除()):

window.onload = sayHello; 

边注:窗口load事件发生得很晚在页面加载的过程,只有经过所有其他资源都被加载,包括所有图像。大多数情况下,你想要更早地运行你的代码。如果是这样,只需将它放入一个script标记中,该标记包含在HTML的结尾处,就在关闭</body>标记之前。

+0

为了展开,'sayHello()'返回'undefined',所以'window.onload'被设置为'undefined',这就是为什么没有发生。 –