2014-11-21 152 views
0
  1. 我试图听单击HAXE/JS事件:听点击事件JS

    静态函数main(){ 变种 initHandler:动态= init;方法
    Browser.window.onload = initHandler; }

    static private function init() var clickHandler:Dynamic = learnBtn; Browser.document.getElementById(“readMoreBtn”)。addEventListener(“click”,clickHandler); }

    静态专用功能learnBtn(){ }

我真的很需要这一切?

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

Browser.window.onload = init; 

OR

Browser.document.getElementById("readMoreBtn").addEventListener("click", learnBtn); 
  • JS文件未加载毕竟HTML?我可以定义?

  • 这与本主题无关,但我试图谷歌和Haxe.org搜索,但没有。什么是“无类型”关键字。

  • +0

    我觉得这非常有帮助:https://groups.google.com/forum/?hl = zh#!topic/haxelang/GSck15Jebh8 – Michael 2014-11-21 00:42:36

    +0

    您的问题需要大量编辑... – Philippe 2014-11-21 14:09:33

    回答

    2

    使用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,其中is defined asDynamic->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