сгенеритьтабличку под IE
<!--
Есть вот такой код, генерирующий таблицу в Опере, но напрочь в IE. Потратил вечер на изучение span, col и т.д. атрибутов/свойств... хелп плз Есть простая задача, сгенерить таблицу javascript'ом, примерно такую: ______ |_____| |__|__| число столбцов во второй строке может измениться. --> <HEAD> <STYLE> TD { border-collapse:collapse; border:solid windowtext 1.0px; text-align:center; font-size:7.0pt; padding:0px; } .Tablica { border-collapse:collapse; border:solid windowtext 1.0px; table-layout:fixed; text-align:center; font-size:12.0pt; } .TH1_ { border-collapse:collapse; border:solid windowtext 1.0px; text-align:center; font-size:12.0pt; } col { text-align:center; width:17px; } </STYLE> </HEAD> <BODY> <script> var _parent=document.body; var newTabl=document.createElement('table'); newTabl.className='Tablica'; newTabl.width='31*'; var newTB=document.createElement('tbody'); var newCol=document.createElement('col'); newCol.span='31'; var newTr1=document.createElement('tr'); var newTr2=document.createElement('tr'); var newTh1=document.createElement('th'); newTh1.className='TH1_'; newTh1.colspan='31'; newTh1.setAttribute('colspan', '31'); //не знаю наверняка для IE newTB.appendChild(newCol); newTh1.appendChild(document.createTextNode("string 1")); newTr1.appendChild(newTh1); newTB.appendChild(newTr1); for (var i=0; i<31; i++) { var newTD=document.createElement('td'); newTD.appendChild(document.createTextNode(i+1)); newTr2.appendChild(newTD); } newTB.appendChild(newTr2); newTabl.appendChild(newTB); _parent.appendChild(newTabl); </script> </BODY> |
Нашёл глюк: colspan=31 работает только как colSpan=31;
Атрибут width="31*" не работает, если указать точную длину width="527" то нормально строит. Однако при нединамическом построении <table class="Tablica" width="31*"> работает. Элемент <Col> вообще ничего не даёт либо его свойства span=31 width=17 нужно задавать как-то иначе, т.е. объявление нескольких столбцов точной длины просто игнорируется. |
Цитата:
Цитата:
Цитата:
Цитата:
|
по существу - 0
За "span" отдельное спасибо, я его так влепил, бездумно. Вопрос такой, createElement('col') даёт что-либо или это не работает в IE, после создания и установки свойств их можно прочесть, однако на экране изменений нет. |
В IE то работает. И в Firefox работает, а вот Opera и Chrome не реагируют:
<table border="1"> <tr> <td>1</td> <td>2</td> </tr> </table> <button onclick="F()">Enlarge width</button> <script type="text/javascript"> function F() { var table = document.getElementsByTagName("table")[0]; var colgroup = document.createElement("colgroup"); var col = document.createElement("col"); col.span = 2; col.width = 200; colgroup.appendChild(col); table.appendChild(colgroup); } </script> |
От спасибо, элемент 'colgroup' действительно выправил мой кривой код, получилось то что надо, за небольшой мелочью - таблица фиксированной длины только в IE, а Опера сдвигает при изменении размера окна. Зафиксировать без явного указания размера всей таблицы не выходит.
<html><head><title>Project</title> <style>col {width:140px;} table {table-layout:fixed;}</style> </head> <body><script> var _parent=document.body; var newTabl=document.createElement('table'); var newTB=document.createElement('tbody'); var colgroup = document.createElement('colgroup'); var newCol=document.createElement('col'); var newTr=document.createElement('tr'); var newTh=document.createElement('th'); var newTr2=document.createElement('tr'); var newTd1=document.createElement('td'); var newTd2=document.createElement('td'); var newTd3=document.createElement('td'); newTabl.border=1; newTh.colSpan=3; newCol.span=3; colgroup.appendChild(newCol); newTB.appendChild(colgroup); newTh.appendChild(document.createTextNode("0")); newTr.appendChild(newTh); newTB.appendChild(newTr); newTd1.appendChild(document.createTextNode("1")); newTd2.appendChild(document.createTextNode("2")); newTd3.appendChild(document.createTextNode("3")); newTr2.appendChild(newTd1); newTr2.appendChild(newTd2); newTr2.appendChild(newTd3); newTB.appendChild(newTr2); newTabl.appendChild(newTB); _parent.appendChild(newTabl); </script></body></html> Кстати, вот такой статичный вариант отрабатывает одинаково как в IE так и Opera: <html><head><title>Project</title> <style>col {width:140px;} table {table-layout:fixed;width:0;}</style> </head> <body> <table border=1> <col span=3> <tr><th colSpan=3>0</th></tr> <tr><td>1</td><td>2</td><td>3</td></tr> </table></body></html> |
Кстати, для работы с таблицами предусмотрены специальные методы и коллекции http://webew.ru/articles/598.webew
|
Часовой пояс GMT +3, время: 08:27. |