- JScript code
function checkbox(){ var checkboxItem = []; var chs = ['A','B','C','D']; for(var i = 0; i < chs.length; i++){ var cls = "width-"+chs[i]+"-box"; var checkbox = new Ext.form.Checkbox({ id:chs[i]+"id", boxLabel:chs[i], listeners:{ render:function(el){ el.getEl().parent().addClass(cls); } } }); checkboxItem.push(checkbox); } return checkboxItem; }
-----------------------------------------------------
上面是一段用for循环生成checkbox的代码,不过有点小问题
当代码运行到el.getEl().parent().addClass(cls);时候,cls的值会改变,变成chs[i+1]
但在checkboxItem.push(checkbox);的后面alert(cls)的值是
width-A-box,width-B-box,width-C-box,width-D-box
----------------------------------
------解决方案--------------------
你可以参考
http://stackoverflow.com/questions/359467/jquery-closures-loops-and-events
这个是jquery的做法
------解决方案--------------------
参照id:chs[i]+"id"写法,不用变量,可能var cls的指针都是一个地址。导致所有checkbox都是D