I have the following coffeescript code to generate and alert box:
我有以下的coffecript代码来生成和警告框:
show_alert = () ->
alert("Hello! I am an alert box!")
which compiles to:
它编译:
(function() {
var show_alert;
show_alert = function() {
return alert("Hello! I am an alert box!");
};
}).call(this);
in my html I have the following
在html中,我有以下内容
<input onclick='show_alert()' type='button' value='Show alert box' />
However, no alert box shows? The following is the html copied from the browser:
但是,没有显示警报框?以下是从浏览器复制的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>
Why am I not able to get an alert box to show up?
为什么我找不到提示框?
4 个解决方案
#1
22
Your problem is that the generated javascript code is in another scope. You have to solve this by either adding the -b
parameter to the coffeescript compiler or export your function explicitly via
您的问题是生成的javascript代码在另一个范围内。您必须通过向coffeescript编译器添加-b参数或通过显式导出函数来解决这个问题
root = exports ? this
root.show_alert = () -> alert("Hello! I am an alert box!")
For more information about the exporting and scope issue have a look at https://*.com/a/4215132/832273
有关导出和范围问题的更多信息,请参阅https://*.com/a/4215132/832273
I created a working jsfiddle with the above coffeescript code
我使用上面的coffeescript代码创建了一个工作的jsfiddle
#2
10
I found two ways to solve this issue FIRST add @ before function name
我发现有两种方法可以解决这个问题:首先在函数名之前添加@
@say_hi = () ->
$(alert('Hello!!!'))
SECOND at the end of coffee file add
第二个在咖啡文件的末尾添加
window["say_hi"] = say_hi
#3
4
in your coffeescrpt code, try to save the function to window: window["show_alert"] = show_alert
在coffeescrpt代码中,尝试将函数保存到window: window["show_alert"] = show_alert
#4
-1
<script type="text/javascript"> var show_alert; show_alert = function(){ alert("Hello,this is me!"); } </script>
I think this is ok.
< script type = " text / javascript " > var show_alert;函数(){alert(“Hello,this is me!”);} 我认为这样可以。
#1
22
Your problem is that the generated javascript code is in another scope. You have to solve this by either adding the -b
parameter to the coffeescript compiler or export your function explicitly via
您的问题是生成的javascript代码在另一个范围内。您必须通过向coffeescript编译器添加-b参数或通过显式导出函数来解决这个问题
root = exports ? this
root.show_alert = () -> alert("Hello! I am an alert box!")
For more information about the exporting and scope issue have a look at https://*.com/a/4215132/832273
有关导出和范围问题的更多信息,请参阅https://*.com/a/4215132/832273
I created a working jsfiddle with the above coffeescript code
我使用上面的coffeescript代码创建了一个工作的jsfiddle
#2
10
I found two ways to solve this issue FIRST add @ before function name
我发现有两种方法可以解决这个问题:首先在函数名之前添加@
@say_hi = () ->
$(alert('Hello!!!'))
SECOND at the end of coffee file add
第二个在咖啡文件的末尾添加
window["say_hi"] = say_hi
#3
4
in your coffeescrpt code, try to save the function to window: window["show_alert"] = show_alert
在coffeescrpt代码中,尝试将函数保存到window: window["show_alert"] = show_alert
#4
-1
<script type="text/javascript"> var show_alert; show_alert = function(){ alert("Hello,this is me!"); } </script>
I think this is ok.
< script type = " text / javascript " > var show_alert;函数(){alert(“Hello,this is me!”);} 我认为这样可以。