在 onclick 属性中使用咖啡脚本创建函数 [重复]
Posted
技术标签:
【中文标题】在 onclick 属性中使用咖啡脚本创建函数 [重复]【英文标题】:Use a coffeescript create function inside a onclick attribute [duplicate] 【发布时间】:2014-09-15 09:32:54 【问题描述】:我从 rails 和 coffeescript 开始,但我现在遇到了一个奇怪的问题。 我想创建一个名为 log 的函数,我在我的 .coffee 中创建了这样的函数:
log = (message) -> console.log message
它是这样翻译成js的:
(function()
var log;
log = function(message)
return console.log(message);
;
log('Podcast downloader 2000');
).call(this);
如果我像在示例中调用的那样调用函数,它会起作用。 但现在我想使用 onclick="log('avb')
来调用它<span onclick="log('abc')"/>
但该函数不在正确的范围内,因此不会被调用。
如何更改代码以便可以从 onclick 属性调用函数?
谢谢!
【问题讨论】:
内联事件处理不是好的做法——使用eventListener
。并且只是提升功能?
【参考方案1】:
正如 Sterling 在评论部分所建议的那样,使用 onclick
不是一个好习惯,但如果您确实需要这样做,请将函数放在全局命名空间中
window.log = (message) -> console.log(message)
在这种情况下,最好为应用创建命名空间并在其中添加功能。
@MyNamespace =
class MyNamespace.CommonFunctions
@log = (message) -> console.log(message)
那么在你看来
<span onclick='MyNamespace.CommonFunctions.log("abc")'>
这样可以使事情井井有条,并且不会阻塞全局命名空间。
听众方法
更好的方法是使用事件监听器(使用 jquery)。
# view
<span class='msg'></span>
# js
log = (message) -> console.log(message)
$('.msg').on 'click', -> log('abc')
【讨论】:
以上是关于在 onclick 属性中使用咖啡脚本创建函数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章