我正在使用Dojo和具有(一般在我的测试案例6,但变量)了一些关于它的项目小部件的网页上。 我调用dojo.addOnLoad(INIT),在我的init()函数我有如下几行:
dojo.connect(dijit.byId("project" + 0).InputNode, "onChange", function() {makeMatch(0);});
dojo.connect(dijit.byId("project" + 1).InputNode, "onChange", function() {makeMatch(1);});
dojo.connect(dijit.byId("project" + 2).InputNode, "onChange", function() {makeMatch(2);});
dojo.connect(dijit.byId("project" + 3).InputNode, "onChange", function() {makeMatch(3);});
dojo.connect(dijit.byId("project" + 4).InputNode, "onChange", function() {makeMatch(4);});
dojo.connect(dijit.byId("project" + 5).InputNode, "onChange", function() {makeMatch(5);});
和change事件为我的项目部件正确调用makeMatch功能。 但是,如果我有一个循环替换它们:
for (var i = 0; i < 6; i++)
dojo.connect(dijit.byId("project" + i).InputNode, "onChange", function() {makeMatch(i);});
同样makeMatch()函数,相同的init()调用,同一切 - 只滚动我的电话成一个圈 - 中makeMatch功能不会被调用; 对象不接线。
这是怎么回事?我该如何解决呢? 我已经使用dojo.query尝试过,但它的行为是一样的for循环情况。