Extjs 循环内创建combox出错

benbenkui 2009-09-21 05:25:32

var oarr=[];
oarr.push(new Ext.form.ComboBox({
transform:'bencmb_13',
lazyRender: true,
autoWidth:true,
autoHeight:true,
emptyText:'请选择要素类型'
}));
oarr.push(new Ext.form.ComboBox({
transform:'bencmb_14',
lazyRender: true,
autoWidth:true,
autoHeight:true,
emptyText:'请选择要素类型'
}));

这样给oarr赋值之后,可以访问。但是把赋值放在循环里就报错:c is null

for(var i=0;i<1;i++){
oarr.push(new Ext.form.ComboBox({
transform:'bencmb_14',
lazyRender: true,
autoWidth:true,
autoHeight:true,
emptyText:'请选择要素类型'
}));
}

...全文
182 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbenkui 2009-09-22
  • 打赏
  • 举报
回复
问题解决了,谢谢hookee的指点,还是transform得问题
benbenkui 2009-09-21
  • 打赏
  • 举报
回复
哦,是不是transform属性的问题,我看了一下API:
The id, DOM node or element of an existing HTML SELECT to convert to a ComboBox. Note that if you specify this and the combo is going to be in an Ext.form.BasicForm or Ext.form.FormPanel, you must also set lazyRender = true.
hookee 2009-09-21
  • 打赏
  • 举报
回复
光上面的代码似乎用不到闭包。可能其他代码需要吧.
benbenkui 2009-09-21
  • 打赏
  • 举报
回复
还是不行,错误也一样。我感觉好像应该用必包解决这个问题

flag = true;
// 向body中生成一些链接,然后绑定事件;
//可惜的是,当你点击每个链接时,输出的都是 Link 4
function addLink(num) {
for (var i = 0; i < num; i++) {
var link = document.createElement('a');
link.innerHTML = "Link " + i;
link.onclick = function() {
alert(i);
};
document.body.appendChild(link);
}
}
// 使用closure 可以解决这个问题
function addLink2(num) {
for (var i = 0; i < num; i++) {
var link = document.createElement('a');
link.innerHTML = "Link" + i;
link.onclick = function(j) { // 使用closure
// 返回一个函数
return function() {
alert(j);
};
}(i);
// 调用这个函数
document.body.appendChild(link);
}
}

感觉问题好像一样,但是我尝试了一下必包的写法,还是不行,不过不知道是不是我必包写的不对。
hookee 2009-09-21
  • 打赏
  • 举报
回复
试试看

for(var i=0;i<1;i++){
oarr.push(new Ext.form.ComboBox({
transform:'bencmb_' + (13+i),
lazyRender: true,
autoWidth:true,
autoHeight:true,
emptyText:'请选择要素类型'
}));
}

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧