我正在使用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