Javascript dojo.connect在循环内不工作。它只保留了我最后一次做的

Javascript dojo.connect在循环内不工作。它只保留了我最后一次做的,javascript,dojo,Javascript,Dojo,嗨,这是我的功能 function connectAccordionTabbing() { for(var i = 0; i < coverageStates.length;i=i+3){ var jsState = coverageStates[i]+coverageStates[i+1]; var firstNode = dijit.getFirstInTabbingOrder(document.getElementById('liabCovBl

嗨,这是我的功能

function connectAccordionTabbing() {
    for(var i = 0; i < coverageStates.length;i=i+3){
        var jsState = coverageStates[i]+coverageStates[i+1];
        var firstNode = dijit.getFirstInTabbingOrder(document.getElementById('liabCovBlock_'+jsState));
        var lastNode  = dijit.getLastInTabbingOrder(document.getElementById('liabCovBlock_'+jsState));
        dojo.connect(firstNode, "onkeypress", function(evt) {
            setTimeout(function() {
                setAccordionTabOffFields(evt,jsState, true);
            }, 10); 
        });
        dojo.connect(lastNode, "onkeypress", function(evt) {
            setTimeout(function() {
                setAccordionTabOffFields(evt,jsState, false);
            }, 10); 
        });
    }
}
它循环遍历每个状态,并使块中的第一个和最后一个节点在页面加载期间具有连接。我遇到的问题是,当我在其中一个节点上按下一个键时,它会调用setAccordionTabOffFields,但它认为我的状态是最后一个状态,即使我处于第三个状态。它在Chrome和IE中实现了这一点,但在firefox中它甚至不调用SetAccordionTaboff字段

你知道我做错了什么吗


谢谢

尝试创建一个全局变量以在循环中存储dojo事件,将dojo connect对象添加到全局变量:

var formEvents = [];

formEvents.push(dojo.connect(dojo.connect(lastNode, "onkeypress", function(evt) {
        setTimeout(function() {
            setAccordionTabOffFields(evt,jsState, false);
        }, 10););

清理时,不要忘记全球:

//Disconnect Dojo events
for (var x=2;x < formEvents.length;x++) {
  var handle = formEvents[x];
  dojo.disconnect(handle);
}

我试过这样做,但仍然得到同样的结果。我还有别的想法吗?
//Disconnect Dojo events
for (var x=2;x < formEvents.length;x++) {
  var handle = formEvents[x];
  dojo.disconnect(handle);
}