Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: DOM - таблица в FF
 
 автор: Хулиган   (13.04.2008 в 22:43)   письмо автору
 
 

Код изготовления таблицы:

    function updateT() {
        if (req.readyState == 4){
            var div = document.getElementById('tDiv');

            var newTbl = document.createElement("TABLE");
            newTbl.align = 'center';
            newTbl.width = "100%";
            newTbl.cellPadding = 0;
            newTbl.cellSpacing = 0;
            newTbl.border = 0;

            var tBody = document.createElement("TBODY");
            newTbl.appendChild(tBody);

            newTbl.style.color = '#4d7b9f';

            var bg = "#f0f0f0";
            for (var i=0; i<req.responseJS.length; i++){
                var row = document.createElement("TR");
                tBody.appendChild(row);

                var td1 = document.createElement("TD");
                td1.style.font = 'bold 12px Tahoma, Verdana, sans-serif';
                td1.style.color = '#4d7b9f';
                td1.style.width = '15%';
                td1.style.height = 16;
                td1.style.padding = '2 2 2 15';
                td1.innerText = req.responseJS[i].st;
                row.appendChild(td1);

                var td2 = document.createElement("TD");
                td2.style.font = '12px Tahoma, Verdana, sans-serif';
                td2.style.color = '#4d7b9f';
                td2.style.width = '85%';
                td2.style.height = 16;
                td2.style.padding = '2 2 2 15';
                td2.innerText = req.responseJS[i].content;
                row.appendChild(td2);

                if ( bg != "#f0f0f0" ) bg = "#f0f0f0";
                else bg = "#ffffff";

                row.style.background = bg;
                row.style.verticalAlign = 'top';

            }
            div.appendChild(newTbl);

            for (var i=0;i < newTbl.childNodes.length;i++) {
                if (newTbl.childNodes[0].childNodes[0].childNodes[i].nodeType == 1) {
                    alert(newTbl.childNodes[0].childNodes[0].childNodes[i].innerText);
                    alert(newTbl.childNodes[0].childNodes[0].childNodes[i].style.color);
                    alert(newTbl.childNodes[0].childNodes[0].childNodes[i].style.background);
                    alert(newTbl.childNodes[0].childNodes[0].childNodes[i].style.font);
                }
            }
            return false;
        }
    }


Таблица создается во всех браузерах. Содержимое таблицы отображается только в IE и опере.
В мозиле таблица тоже создается, но текста в ячейках не видно. Текст как таковой в ячейках присутствует, что видно по алертам.
Но на экране не отображается. Только чередующиеся пустые строки белого и серого цвета.

Я забыл какой-то аттрибут, или что?
Консоль javascript никаких ошибок не показывает.
DOM-инспектор тоже показывает наличие таблицы, строк, ячеек.

   
 
 автор: Lstasss   (13.04.2008 в 23:16)   письмо автору
 
   для: Хулиган   (13.04.2008 в 22:43)
 

попробуйте
 td2.innerText = req.responseJS[i].content;  
поменять на
td2.innerHTML= req.responseJS[i].content; 

   
 
 автор: Хулиган   (14.04.2008 в 00:19)   письмо автору
 
   для: Lstasss   (13.04.2008 в 23:16)
 

Это ничего не даёт. Более того, элементы tr и td вооще перестают создаваться.

   
 
 автор: Lelik   (14.04.2008 в 00:25)   письмо автору
 
   для: Хулиган   (14.04.2008 в 00:19)
 


td1.innerText = req.responseJS[i].st;
row.appendChild(td1); 

вот эти строки надо обязательно поменять местами. так как окончательно элемент создан только после метода appendChild, и только после этого можно добавлять контент. кста и innerText надо поменять на innerHTML, так как innerText будет работать только в ИЕ.

   
 
 автор: Хулиган   (14.04.2008 в 00:57)   письмо автору
 
   для: Lelik   (14.04.2008 в 00:25)
 

innerHTML не будет работать для текста.
Нашёл как это делается: есть специально для текста нода, называемая TextNode, и есть специально для этого метод .createTextNode:

var newText = document.createTextNode(reqTv.responseJS[i].st);
td1.appendChild(newText);

Вот так работает во всех браузерах.

Информация найдена тут:
http://developer.mozilla.org/en/docs/DOM:table.insertRow

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования