1

这是问题所在。我有一个名为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

4 回答 4

9

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

于 2012-08-05T05:32:53.320 回答
3

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

  • init函数移到就绪函数之外,进入全局范围
  • init通过使其成为全局对象的属性来导出函数:window.init = function() {…};
  • 当您使用 jQuery 时,您不需要在属性中定义任何处理程序。而是使用(在 ready 函数中):$("button").click(function init() {…});更好地使用 anid来引用按钮。
于 2012-08-05T05:46:08.387 回答
2

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

于 2012-08-05T05:42:40.633 回答
1

你为什么不使用

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

您也可以使用标志来跟踪“//代码在此处”是否继续进行。因此,如果文档尚未准备好,您可以使用带有 setTimeOut 函数的 while 循环暂停一段时间“为了不挂起客户端浏览器”。

于 2013-01-22T14:34:20.750 回答