我是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>
答案 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