分配onclick事件的不同方法dojo

分配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

第二种方法,我硬编码输入id并将它们连接到onclick事件,可以正常工作

但是,当我使用第一种方法时,它不起作用。 代码以这种方式执行

      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').getElementsByClassN‌​ame('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>