[英]listen to click event JS
我试图听Haxe / JS中的click事件:
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
这意味着什么? 这意味着具有Void->Void
签名的函数init()
应该是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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.