-1

我是咖啡脚本的新手..这是我的第一个脚本并且无法正常工作..

html
 head title='hello world'
  css:
   h1{
    color: blue;
    }
  coffee:
     number   = 42
     opposite = true
     saybye = () ->
      alert 'hello'+number
      ''        
body
  h1 
   |hello world
  input type="button" onclick="saybye()" value="sayhello"

scss:
 $blue: #3bbfce;

 h2{
  color: $blue;
 } 

它说没有找到saybye,我应该总是以一些会得到回报的表达结束。有没有办法停止回电?

4

1 回答 1

3

我不知道 Slim 做了什么,但 CoffeeScript 通常被包裹在一个函数中以避免命名空间污染。因此,您的 CoffeeScript 可能最终会被转换为 JavaScript,如下所示:

(function() {
  var number, opposite, saybye;

  number = 42;

  opposite = true;

  saybye = function() {
    alert('hello' + number);
    return '';
  };
})();

结果是saybye您的 HTML 不可见。

你真的不应该onclick在 2012 年使用,你应该通过现代 API 绑定到事件。如果你使用 jQuery,你会这样做:

coffee:
  number   = 42
  opposite = true
  saybye = () ->
    alert 'hello'+number
    ''  
  $ -> $('input[type=button]').click saybye

如果您不使用 jQuery(或类似的),那么您将很难addEventListener在原始 DOM 对象上使用它。或者,您可以将它们放入window自己并绕过范围保护:

coffee:
  window.number   = 42
  window.opposite = true
  window.saybye   = () ->
    alert 'hello' + number

就退货而言,不要担心,退回任何有意义的东西。有时返回undefined有意义,有时则没有。如果没有明显的返回值,那么就让 CoffeeScript 做它想做的事,继续:

saybye = () ->
  alert 'hello' + number

并继续解决更有趣的问题。

于 2012-01-20T18:02:14.647 回答