Autor Zpráva
pavel120
Profil
Zdravím, mám problém s tabulkou vytvořenou JavaScriptem. Lépe řečeno, zatímco ve Firefoxu a Opeře funguje následující kód, alespoň podle mého názoru, správně, IE tabulku ne a ne vykreslit. Tady je tedy ten kód (uzavřený v těle dokumentu, mezi značkami <body>, </body>):
function vytvoritTabulku()
{
  var text=document.createTextNode('Buňka');
  var bunka=document.createElement('td');
  var radek=document.createElement('tr');
  var tabulka=document.createElement('table');
  
  bunka.appendChild(text);
  radek.appendChild(bunka);
  tabulka.appendChild(radek);
  document.body.appendChild(tabulka);
}

Po zavolání této funkce zůstane okno v IE prázdné, bez tabulky. Opravdu nevím, v čem je problém.
Za jakoukouli pomoc proto předem děkuji. :)
pavel120
Profil
Tak jsem tomu nakonec přišel na kloub. Pokud tedy řešíte podobný problém, zkuste postupovat následovně:
var tabulka=document.createElement('table');
var telo=document.createElement('tbody');

tabulka.appendChild(telo);

var radek=telo.insertRow(0);
var bunka=radek.insertCell(0);

bunka.appendChild(document.createTextNode('Buňka'));
document.body.appendChild(tabulka);
Element tabulky vyřešíme klasickým způsobem, metodou createElement(); Musíme ale vytvořit i tělo tabulky, to proto, že obsahuje metodu pro vytvoření řádku tabulky (insertRow()). Důležité ale je, že ještě předtím musíme toto tělo do tabulky vložit. Nevím sice proč, ale v opačném případě se tabulka prostě nevytvoří. Sám jsem to moc nepochopil. Zbývá již tedy vytvořit buňku, a to metodou řádku insertCell(). Parametrem, to platí i pro metodu těla tabulky insertRow(), je číslo udávající pořadí buňky, resp. řádku, přičemž 1. buňka (řádek) má pořadové číslo 0. Nakonec už jen stačí vložit do buňky text.
Sám už víc podrobností nevím, takže víc už nepomůžu :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: