|
|
|
| Код изготовления таблицы:
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-инспектор тоже показывает наличие таблицы, строк, ячеек. | |
|
|
|
|
|
|
|
для: Хулиган
(13.04.2008 в 22:43)
| | попробуйте
td2.innerText = req.responseJS[i].content;
| поменять на
td2.innerHTML= req.responseJS[i].content;
|
| |
|
|
|
|
|
|
|
для: Lstasss
(13.04.2008 в 23:16)
| | Это ничего не даёт. Более того, элементы tr и td вооще перестают создаваться. | |
|
|
|
|
|
|
|
для: Хулиган
(14.04.2008 в 00:19)
| |
td1.innerText = req.responseJS[i].st;
row.appendChild(td1);
|
вот эти строки надо обязательно поменять местами. так как окончательно элемент создан только после метода appendChild, и только после этого можно добавлять контент. кста и innerText надо поменять на innerHTML, так как innerText будет работать только в ИЕ. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|