侦听单击事件 JS
listen to click event JS
我试图在Haxe/JS中收听单击事件:
static function main()
{
var initHandler:Dynamic = init;
Browser.window.onload = initHandler;
}
static private function init()
{
var clickHandler:Dynamic = learnBtn;
Browser.document.getElementById("readMoreBtn").addEventListener("click", clickHandler);
}
static private function learnBtn()
{
}
我真的需要这一切吗?
为什么我不能这样做(没有initHandler
和clickHandler
):
Browser.window.onload = init;
或
Browser.document.getElementById("readMoreBtn").addEventListener("click", learnBtn);
所有 HTML 后没有加载 JS 文件?我可以定义吗?
它与这个主题无关,但我试图谷歌搜索 Haxe.org 但什么都没有。 什么是"未键入"关键字。
使用Dynamic
中间变量间接解决了您的问题,但您应该尝试理解编译器错误消息。
编译器说什么:
如果你写:
function init() {
// do stuff on window.onload
}
Browser.window.onload = init;
编译器会告诉你:
Test.hx:22: characters 68-117 : Void -> Void should be js.html.EventListener
Test.hx:22: characters 68-117 : Void -> Void should be Dynamic -> Void
那是什么意思?这意味着你的函数init()
,它有一个Void->Void
签名,应该是js.html.EventListener
的,定义为Dynamic->Void
。
正确的代码:
换句话说,你init()
函数应该有一个参数,所以它应该声明为:
function init(event:Dynamic) {
// do stuff on window.onload
}
强制编译器
你可以告诉编译器让你编写可能不正确(但我们知道有效)的代码:
var foo:Dynamic = init;
Browser.window.onload = foo; // always happy
Browser.window.onload = untyped init; // do not type, please
Browser.window.onload = cast init; // I'm sure I'm right
相关文章:
- 为什么js事件消失了
- 使用onkeyup JS事件检查输入的值是否唯一
- JS事件未更改输入禁用属性
- jQuery的等价物's$(this)在Ractive.js事件代理中
- Raphael JS事件未开火
- Ajax 请求正在取消页面上的其他 JS 事件
- 当多个 JS 事件调用同一个函数时,如何处理它们
- 主干.js事件处理程序命名的最佳做法
- js事件,用于函数内部的when语句变为true
- React.js事件需要点击2次才能执行
- 单击文档时的Backbone JS事件
- 在添加元素时激发JS事件
- 作为自动化测试的一部分,监控特定的js事件以及执行它们所需的时间
- JS事件CTRL+鼠标悬停+隐藏文本
- Backbone.js事件未启动
- JS调试器是否挂起整个JS事件循环
- js事件循环是否意味着可以为临时暂存空间使用全局变量
- 在Backbone.js视图中拖动gabilly.js事件
- 从本机 java 代码调用 JS 事件
- 主干网.js事件和内存管理