如何将编译coffeescript放在我的html页面中

时间:2013-08-21 09:50:42

标签: coffeescript

我是coffeescript和javascript的新手 我写了一个简单的代码=>

 1 number = 42
  2 coffee = ->
  3     ans = confirm "Ready?"
  4     "your answer is #{ans}"

我将生成的javascript放入html中 点击按钮调用咖啡功能, 但它没有显示警报窗口,Firebug告诉我“ReferenceError:咖啡没有定义 “

 1 <head>
  2     <script type=”text/javascript” src=”http://codeorigin.jquery.com/jquery-1.10.2.js"> </script>
  3     <script type="text/javascript" >
  4         // Generated by CoffeeScript 1.6.3
  5         $(document).ready(
  6                 function(){
  7
  8                 var coffee, fk, number;
  9
 10                 number = 42;
 11
 12                 coffee = function() {
 13                 var ans;
 14                 ans = confirm("Ready?");
 15                 return "your answer is " + ans;
 16                 };
 17                 });
 18
 19         </script>
 20     </head>
 21     <body>
 22         <input type=button name="lala" value="hihi" onclick="coffee();">
 23     </body>

2 个答案:

答案 0 :(得分:1)

您需要导出您希望对外界可见的脚本部分。

最简单的方法就是

window.myCoffee = {}

number = 42

myCoffee.coffee = ->
   ans = confirm "Ready?"
   "your answer is #{ans}"

这是因为脚本被包装到它自己的私有范围中。

但由于您已经在使用jQuery,因此更好的解决方案是将click处理程序附加到DOM元素。

number = 42

$('input').click ->
   ans = confirm "Ready?"
   "your answer is #{ans}"

最后,从onClick返回一个字符串似乎没那么有用。也许alert

答案 1 :(得分:1)

您将coffee函数定义为另一个函数的局部变量,因此它不会在全局范围内可用。

不建议将onclick事件放到HTML中的元素中,因此使用jQuery附加事件应该可以解决问题:

number = 42
coffee = ->
    ans = confirm "Ready?"
    "your answer is #{ans}"

$("input[name=lala]").on "click", coffee