Javascript 无法将click eventhandler连接到dojo中的按钮

Javascript 无法将click eventhandler连接到dojo中的按钮,javascript,dojo,Javascript,Dojo,我正在创建一个小型Web服务,它需要一个按钮将地图重新居中到预定义的点。这似乎是一分钟的要求,让我在过去的两个小时里忙个不停 该脚本使用ArcGis Js api 3.9 以下是相关代码: //ClickEvent To reCenter the map var ReCenterButton = dom.byId('btnReCenter'); ReCenterButton.on('click', function (e) { map.centerAndZoom(new Point(

我正在创建一个小型Web服务,它需要一个按钮将地图重新居中到预定义的点。这似乎是一分钟的要求,让我在过去的两个小时里忙个不停

该脚本使用ArcGis Js api 3.9

以下是相关代码:

//ClickEvent To reCenter the map
var ReCenterButton = dom.byId('btnReCenter');
ReCenterButton.on('click', function (e) { 
     map.centerAndZoom(new Point(14, 51), 9);
});
标记:

<button id="btnReCenter" data-dojo-type="dijit/form/Button" type="button">ReCenter</button>
ReCenter
ReCenterButton=dom.byId(/*{…}*/)抛出错误:

未捕获类型错误:未定义不是函数


我在这里遗漏了什么?

我认为这里有几个错误,首先没有Dojo 3.9,我想这是一个打字错误,你是说Dojo 1.9

您得到的错误意味着它找不到函数,可能是因为您没有导入
dojo/dom
模块,因此它找不到
dojo/dom::byId()
函数。确保模块正确包含在
require()
中,并映射到名为
dom
的变量上,例如:

require([“dojo/dom”],函数(dom){
var ReCenterButton=dom.byId(“btnReCenter”);
});
但是,DOM节点在()上没有函数
,因此这也可能是错误的原因。当您使用
dojo/dom::byId()
时,它将返回一个普通的dom节点。但是,如果您使用的是像
dijit/form/Button
这样的小部件,则应该使用
dijit/registry::byId()
函数,例如:

require([“dijit/registry”、“dojo/ready”、“dijit/form/Button”、“dojo/parser”]),函数(registry,ready){
ready(function(){//等待,直到解析HTML标记并实例化小部件
var ReCenterButton=registry.byId('btnReCenter');//使用dijit/registry
重新居中按钮。在('click',函数(e){
地图中心和缩放(新点(14,51),9);
});
});
});

确实是个打字错误。我的意思是
http://js.arcgis.com/3.9/
。我会修好的。使用注册表:
uncaughttypeerror:无法读取未定义的属性“on”
。在我删除
dojo/domReady之后,ready函数最终解决了这个问题从需求中删除,并将其替换为
dojo/ready
。非常感谢。