这个javascript代码工作正常。
function goToByScroll(id){
$('html,body').animate({scrollTop: $("#"+id).offset().top - 50},'slow');
}
我的CoffeScript版本很难过。我在application.js.coffee
上有以下代码。
goToByScroll = (id) ->
$("html,body").animate ->
scrollTop: $("#" + id).offset().top - 50
, "slow"
但是我收到了错误
ReferenceError: Can't find variable: goToByScroll
知道可能导致错误的原因是什么?
答案 0 :(得分:4)
如果函数位于不同的文件中,则它位于闭包内部且无法访问。将函数附加到窗口对象或在同一文件中声明它。
答案 1 :(得分:3)
乔丹说的是正确的:你需要以某种方式导出你的功能
到全局可访问的范围或使用bare
编译CoffeeScript
标志,防止输出被包装在匿名函数中。
此外,你在CoffeeScript中遇到了一些错误:你已经过去了
对jQuery.animate
的回调,而不是像你那样的对象文字
JavaScript代码。对于等效行为,您可能需要类似的东西
这样:
goToByScroll = (id) ->
$("html,body").animate
# CoffeeScript supports string interpolation, that's what the #{}
# syntax does
scrollTip: $("##{id}").offset().top - 50
, "slow"
# Then, export it by attaching it to the window or some object accessible
# outside this scope
window.goToByScroll = goToByScroll