日期:2014-05-16  浏览次数:20264 次

动态生成checkbox的问题
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