分配onclick事件的不同方法dojo
第二种方法,我硬编码输入id并将它们连接到onclick事件,可以正常工作 但是,当我使用第一种方法时,它不起作用。 代码以这种方式执行分配onclick事件的不同方法dojo,dojo,dijit.form,Dojo,Dijit.form,第二种方法,我硬编码输入id并将它们连接到onclick事件,可以正常工作 但是,当我使用第一种方法时,它不起作用。 代码以这种方式执行 select1.on('change',function(evt) { requiredFunction(select8.id);//select9 is not present (so I changed loop end value from input
select1.on('change',function(evt) {
requiredFunction(select8.id);//select9 is not present (so I changed loop end value from inputs.length -1 to inputs.length -2 )
}
我是否缺少dojo中的一些事件处理原则
方法1:
function assignOnClickEvents(table) {
var inputs = document.getElementById(table).getElementsByClassName('classname');
for (var i = 0; i < (inputs.length - 1); i++) {
dijit.byId(inputs[i].id).on('change', function (evt) {
requiredFunction(inputs[i+1].id);
});
}
}
您混合了DOM节点ID和Dijit ID。这可能是代码无法工作的原因之一。 要解决此问题,您可以尝试以下方法:
var inputs=dijit.findwidget(表);//返回小部件,而不是DOM节点
对于(变量i=0;i
在dojo中,小部件和DOM节点之间存在差异。因此,使用DOM函数(通过ID或类名检索DOM节点)并不总是有效的。它们可以工作,但事实并非总是如此。您也可以调用函数
requiredFunction()
,如下所示:
<input data-dojo-attach-event="onChange:requiredFunction"></input>
这将减少您的循环时间,并且可以像您希望的那样工作
祝您一切顺利。我刚刚签入了开发人员工具,该工具dijit.byId(document.getElementById('tablenameFromParameter').getElementsByClassName('classname')[i].id)返回[Widget dijit.form.Select,accountNameSelectForExcel(AC)],这是一个小部件。而dijit.findWidgets('tablenameFromParameter')不返回任何内容。虽然我返回DOM节点,但我通过使用dijit.byId(DOMNode.id)获得了dijit小部件
<input data-dojo-attach-event="onChange:requiredFunction"></input>