从html调用javascript函数不起作用

时间:2012-08-05 05:31:14

标签: javascript jquery html

这是问题.. 我有一个名为 javascript.js 的javascript文件,如下所示

$(document).ready(function(){

 function init()
  { 

    //code goes here

  }
  }

现在index.html文件有一个命令按钮,它应该调用init()函数。

   <html>
   <head><script src=javascript.js ....></script>
   <body><button type="button" onclick="init()">Call Init!</button></body>
   </html>

但它没有称之为。没有任何事情按预期发生。请提出解决方案。

4 个答案:

答案 0 :(得分:7)

您应该在$(document).ready()范围之外定义您的功能。

答案 1 :(得分:3)

onclick属性将在全局上下文中执行。您的init函数的作用域是您传递给jQuery的匿名函数。三种解决方案:

  • init功能移到就绪功能之外,进入全局范围
  • 通过使init函数成为全局对象的属性来导出window.init = function() {…};函数:$("button").click(function init() {…});
  • 当您使用jQuery时,您不需要在属性中定义任何处理程序。而是使用(在就绪函数内):id更好地使用{{1}}来引用按钮。

答案 2 :(得分:2)

尝试在Chrome中查看该页面。点击F12查看控制台。您将能够快速调试该问题。但是,乍一看,我确实看到你的$(document).ready函数未正确关闭。添加');'在您包含的代码的末尾。另外,在脚本标记中添加javascript.js周围的引号。看看是否有帮助。

答案 3 :(得分:1)

为什么不使用

function init()
{ 
   $(document).ready(function() {
       //code goes here
   });
}

你也可以使用flag来跟踪“// code goes here”是否继续。因此,如果文档尚未准备就绪,您可以使用带有setTimeOut函数的while循环一些暂停间隔“为了不挂起客户端浏览器”。