Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用用coffee脚本定义的函数?_Javascript_Html_Coffeescript - Fatal编程技术网

Javascript 调用用coffee脚本定义的函数?

Javascript 调用用coffee脚本定义的函数?,javascript,html,coffeescript,Javascript,Html,Coffeescript,我有以下coffeescript代码来生成和警告框: show_alert = () -> alert("Hello! I am an alert box!") 其汇编目的是: (function() { var show_alert; show_alert = function() { return alert("Hello! I am an alert box!"); }; }).call(this); 在我的html中,我有以下内容 <input

我有以下coffeescript代码来生成和警告框:

show_alert = () ->
  alert("Hello! I am an alert box!")
其汇编目的是:

(function() {
  var show_alert;

  show_alert = function() {
    return alert("Hello! I am an alert box!");
  };

}).call(this);
在我的html中,我有以下内容

<input onclick='show_alert()' type='button' value='Show alert box' />

但是,没有显示警报框?以下是从浏览器复制的html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>Test Rails Application</title>
    <style type='text/css'>.application h1 {
  color: lime; }
</style>
    <script type='text/javascript'>(function() {
  var show_alert;

  show_alert = function() {
    return alert("Hello! I am an alert box!");
  };

}).call(this);
</script>
  </head>
  <body>
    <h1>Hello from applicaiton.html.haml</h1>
    <div class='application'><h1>Hello World</h1>
<input onclick='show_alert()' type='button' value='Show alert box' />
</div>
  </body>
</html>

测试Rails应用程序
.应用h1{
颜色:石灰;}
(功能(){
var显示警告;
show_alert=函数(){
返回警报(“你好!我是一个警报框!”);
};
}).打电话(这个);
你好,来自application.html.haml
你好,世界

为什么我无法显示警报框?

在您的coffeescrpt代码中,尝试将函数保存到window:
window[“show\u alert”]=show\u alert
您的问题是生成的javascript代码在另一个作用域中。你必须解决这个问题 将
-b
参数添加到coffeescript编译器或导出函数 明确通过

root = exports ? this
root.show_alert = () -> alert("Hello! I am an alert box!")
有关导出和范围问题的更多信息,请查看


我用上面的coffeescript代码创建了一个 首先在函数名之前添加@

@say_hi = () ->
  $(alert('Hello!!!'))
第二个在咖啡文件末尾添加

window["say_hi"] = say_hi

jftr我想
root=exports?这root.show\u alert=show\u alert
比直接访问窗口更好。寻找details@mrujavascript总是让我非常困惑。是否有你们两位推荐的特定参考网站或文本?@KurtRudolph取决于您正在寻找的内容,但请看一看谢谢,我感谢您的帮助。