Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

IE vs все остальные (Денис В.)
Author Message
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Wed Aug 26, 2009 12:27 pm (написано за 3 минуты 36 секунд)
   Post subject: IE vs все остальные
Reply with quote

Уважаемые специалисты, в последнем топике я пытался разобраться как ускорить процесс построения таблиц средствами JavaScript(forum.dklab.ru/viewtopic.php?t=34961&highlight=). Выбрав метод генерации таблиц и переписав скрипт столкнулся со следующей проблемой - везде работает кроме IE :) Вырвав кусок кода из программы для опкатки и убедившись, что по прежнему работает везде кроме IE:
Code (JavaScript): скопировать код в буфер обмена
                var table = document.createElement("table");
                table.setAttribute("border", "1");
                table.setAttribute("bordercolor","#000000")
                table.setAttribute("class","tblText");
                table.setAttribute("cellpadding","0");
                table.setAttribute("cellspacing","0");
                table.setAttribute("width",500);
                table.setAttribute("height",500);
                var row = document.createElement("tr");
                table.appendChild(row);
                var cell = document.createElement("td");
                cell.setAttribute("colSpan", "2",0);
                cell.setAttribute("width", "300");
                var cont = document.createTextNode("Camera number")
                cell.appendChild(cont);
                row.appendChild(cell);
                document.getElementById("tableX").appendChild(table);
Дорогие специалисты, что не так????
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Wed Aug 26, 2009 12:30 pm (спустя 3 минуты; написано за 59 секунд)
   Post subject:
Reply with quote

Денис В.,
здравствуйте! Если мне не изменяет память, то в ИЕ есть проблемы с setAttribute, попробуйте для него вместо:
Code (JavaScript): скопировать код в буфер обмена
el.setAttribute('attr', 'value');
использовать
Code (JavaScript): скопировать код в буфер обмена
el.attr = value;
Back to top
View user's profile Send private message Send e-mail
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Wed Aug 26, 2009 12:44 pm (спустя 13 минут; написано за 18 секунд)
   Post subject:
Reply with quote

Не прокатило :(
Code (JavaScript): скопировать код в буфер обмена
                var table = document.createElement("table");
                table.border = "1"
                table.bordercolor = "#000000";
                table.width = "500";
                table.height = "500";
                var row = document.createElement("tr");
                table.appendChild(row);
                var cell = document.createElement("td");
                cell.colSpan = "2"
                var cont = document.createTextNode("Camera number")
                cell.appendChild(cont);
                row.appendChild(cell);
                document.getElementById("tableX").appendChild(table);
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Aug 26, 2009 12:46 pm (спустя 2 минуты; написано за 6 секунд)
   Post subject:
Reply with quote

Денис В.
А что именно не работает?
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Wed Aug 26, 2009 12:54 pm (спустя 7 минут; написано за 28 секунд)
   Post subject:
Reply with quote

Денис В.,
а что IE пишет? В левом уголочке должен значек появится такой, кликните по нему... Какие ошибки пишет?
Back to top
View user's profile Send private message Send e-mail
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Wed Aug 26, 2009 1:01 pm (спустя 6 минут; написано за 24 секунды)
   Post subject:
Reply with quote

Вот собственно результат работы:

IE:


FF:
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Aug 26, 2009 1:12 pm (спустя 11 минут; написано за 19 секунд)
   Post subject:
Reply with quote

Нескромный вопрос... а кто будет создавать TBody?
Back to top
View user's profile Send private message
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Wed Aug 26, 2009 2:15 pm (спустя 1 час 2 минуты; написано за 3 минуты 12 секунд)
   Post subject:
Reply with quote

WingedFox, я обязательно его создам. Но не очень понимаю как у меня до этого все работало когда я пользовался insertCell()? Или это филосовский вопрос? :) В общем то все заработало! Спасибо!

WingedFox, у меня к Вам остался один вопрос:

"Быстрее всего - генерить виртуальную таблицу через innerHTML и перебрасывать строчки в реальную через appendChild. " - это Ваш ответ из forum.dklab.ru/viewtopic.php?p=173921&highlight=#173921 .

Что имелось ввиду? или это, что я делаю сейчас(текущий вопрос) это и есть то самое?

Спасибо большое
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Aug 26, 2009 2:46 pm (спустя 31 минуту; написано за 13 минут 31 секунду)
   Post subject:
Reply with quote

Денис В.
Ну, в войне за "тупого юзера" есть только проигравшие, поскольку получилась дурная объектная модель и наборы различных хаков для "упрощения жизни", с которыми нам теперь приходится мириться. И вообще, полезно читать доки: msdn.microsoft.com/en-us/library/ms532998(VS.85).aspx
Денис В. wrote:
Что имелось ввиду?
Примерно такое:
Code (JavaScript): скопировать код в буфер обмена
function RowsFactory (arr) {
    var self = this;
    var rows = [];
    var idx = -1;
    self.hasNext = function () {
        return rows.length-1 < idx;
    }
    self.next = function () {
        if (!rows || !rows[++idx])
            throw new Error ("No more rows");
        return rows[idx];
    }
    ;(function () {
        for (var i=0, aL=arr.length; i<aL; i++) {
            rows.push(arr[i].join("</td></td>"));
        }
        var el = document.createElement("div");
        el.innerHTML = "<table><tr><td>"+rows.join("</td></tr><tr><td>")+"</td></tr></table>";
        var rColl = el.firstChild.rows;
        for (var i=0, rL=rColl.length; i<rL; i++) { // нужно всё скопировать в отдельный массив, чтобы перенос строчки другому родителю ничего не сломал в индексах
            rows[i] = rColl[i];
        }
    })()
}

var rf = new RF([[1,2,3],[4,5,6]])
   ,tgt = document.getElementById('targettable').tBodies[0];

while (rf.hasNext()) {
    tgt.appendChild(rf.next());
}
Сразу говорю, код я не тестировал =)
Back to top
View user's profile Send private message
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Wed Aug 26, 2009 3:00 pm (спустя 14 минут; написано за 1 минуту 36 секунд)
   Post subject:
Reply with quote

WingedFox, спасибо большое! Не стоило утруждать себя кодом! Можно было сказать, что это не тривиальный ход :) Спасибо за ответы.

Вопрос решен, тему можно закрыть.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Aug 26, 2009 3:04 pm (спустя 3 минуты; написано за 5 секунд)
   Post subject:
Reply with quote

Денис В.
На здоровье =)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML