#dom #extjs
#dom #extjs
Вопрос:
Я создаю элементы с помощью 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);
Это работает в i FF, но не в IE, почему это?
Ответ №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);
Комментарии:
1. Ошибки нет, просто она не создается, она отображается на панели инструментов разработчика, и если я нажимаю «Редактировать» и закрываю «Редактировать», кажется, что dom обновляется, а затем отображается, но это отстой. IE равен 8.
2. @dfilkovi Хорошо, мне нужна дополнительная информация об этой ошибке. Я протестировал код с ExtJS 3.3 в IE8, и все заработало.
3. IE 7, я только что проверил, что мой браузер находится в режиме совместимости, он не работает в IE7, в IE8 работает, но это тоже проблема для меня, он должен работать в обоих браузерах.
4. На данный момент у меня нет времени, и я не нашел решения. Я вернусь к этому позже. На данный момент я не знаю, что там происходит, что изменения не отображаются.
5. Я не могу вам с этим помочь. Вы пытались опубликовать это на форуме sencha?
Ответ №2:
Попробуйте использовать Ext.DomHelper для создания элементов DOM и работы с ними. Ознакомьтесь с документацией DomHelper at Ext API и следуйте этому руководству.
Комментарии:
1. Да, DOM работает, но что, если я хочу добавить пользовательских прослушивателей к элементам, таким как on click, контекстное меню и другим, поскольку я знаю, что это может быть достигнуто только с помощью Ext.Element или я ошибаюсь?
2. Да, у вас будут просто простые элементы DOM, и я не знаю никакого способа получить из них Ext.Element.
3. Чтобы добавить, вы можете управлять своей производительностью, установив
Ext.DomHelper.useDom = false
, что увеличивает производительность. Проверьте документы о том, как и когда использовать.
Ответ №3:
Это старый пост, но для тех, кто все еще ищет ответы, пожалуйста, проверьте приведенный ниже код, он должен нормально работать в 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);