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);
}