我正在使用dojo的网页上工作,并在其上有一个数字(在我的测试用例中是6个,但一般情况下是可变的)。我调用dojo.addOnLoad(INIT),在我的init()函数我有这行:为什么我不能在Javascript中滚动循环?
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);});
,并更改事件为我的项目部件正确调用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循环的情况相同。
优秀;谢谢;这工作完美。我认为了解封闭需要很长时间。 – 2009-06-24 17:18:30