繁体   English   中英

监听点击事件JS

[英]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()
{
}

我真的需要这一切吗?

为什么我不能做到这一点(没有initHandlerclickHandler ):

Browser.window.onload = init;

要么

Browser.document.getElementById("readMoreBtn").addEventListener("click", learnBtn);
  1. 所有的HTML都没有加载JS文件吗? 我可以定义吗?

  2. 它与本主题无关,但是我尝试在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM