2011-05-06 37 views
4

我创建Ext.Element的内容是这样的:ExtJS的DOM和Ext.Element的创作问题

var table = new Ext.Element(document.createElement('table')); 

    for(n=0;n<5;n++) 
    { 
     row = new Ext.Element(document.createElement('tr')); 
     for(x=0;x<4;x++) 
     { 
      col = new Ext.Element(document.createElement('td')); 
      col.update('cell text '+x);  
      row.appendChild(col); 
     } 
     table.appendChild(row); 
    } 

    Ext.fly('data').replaceWith(table); 

这工作我FF但不是在IE浏览器,这是为什么?

+0

什么版本的extjs? – McStretch 2011-05-06 13:35:12

+0

Extjs版本3.3 – dfilkovi 2011-05-06 16:24:58

回答

1

下面的代码在IE8曾与ExtJS的3.3

var table = new Ext.Element(document.createElement('table')); 

for(n=0;n<5;n++) 
{ 
    var row = new Ext.Element(document.createElement('tr')); 
    for(x=0;x<4;x++) 
    { 
     var col = new Ext.Element(document.createElement('td')); 
     col.update('cell text '+x);  
     row.appendChild(col); 
    } 
    table.appendChild(row); 
} 

Ext.fly('data').replaceWith(table); 
+0

不,不工作... – dfilkovi 2011-05-06 13:14:16

+0

没有错误,只是它没有创建,它显示在开发人员工具栏中,如果我点击编辑并关闭编辑,它看​​起来像DOM更新,然后显示,但这很糟糕。 IE是8. – dfilkovi 2011-05-06 13:15:16

+0

@dfilkovi好的,我需要关于这个错误的更多信息。我在IE8中测试了ExtJS 3.3的代码,并且都运行正常。 – sra 2011-05-06 13:28:59

1

尝试使用Ext.DomHelper创建DOM元素,并与他们一起工作。查看Ext API文档中的DomHelper,并按照这个tutorial

+0

是的,DOM工作,但是当我想添加一个自定义的监听器,像点击,上下文菜单和其他的元素时,我知道这只能用Ext.Element完成,还是我错了? – dfilkovi 2011-05-06 16:28:02

+0

是的,你只是有一个简单的DOM元素,我不知道从他们那里得到一个Ext.Element的方法。 – sra 2011-05-10 14:02:55

+0

要添加,您可以通过设置'Ext.DomHelper.useDom = false'来控制性能,这可以提高性能。查看关于如何以及何时使用的文档。 – 2012-09-03 09:16:08

0

这是一个旧帖子,但对于那些仍在寻找答案,请检查下面的代码,它应该在IE中正常工作。

var table = new Ext.Element(document.createElement('table')); 
var tbody = new Ext.Element(document.createElement('tbody')); 
for(n=0;n<5;n++) 
{ 
    var row = new Ext.Element(document.createElement('tr')); 
    for(x=0;x<4;x++) 
    { 
     var col = new Ext.Element(document.createElement('td')); 
     col.update('cell text '+x);  
     row.appendChild(col); 
    } 
    tbody.appendChild(row); 
} 
table.appendChild(tbody); 

Ext.fly('data').replaceWith(table);