Autor Zpráva
Radovan789
Profil *
Dobrý den,
udělal jsem si tento kód:

<script type="text/javascript">
function add_new() {
document.getElementById("calc_main_table").innerHTML += '<tr><td>Nový řádek</td></tr>';
}
</script>

<table class="kalkulacni_tabulka" border="1" id="calc_main_table">
</table>


V Mozzile funguje bez problému ale v ostatních prohlížečích ne. Lze nějak kód poupravit aby fungoval i v ostatních prohlížečích ? Děkuji.
Radek9
Profil
Radovan789:
Projdi si funkce createElement() a appendChild().
_es
Profil
Radek9:
Projdi si funkce createElement() a appendChild().
V tabuľkách funguje aj jednoduchšie použiteľná metóda insertRow.
Radovan789
Profil *
_es:
1. Data se mě vkládají na začátek tabulky.
2. Co když mám <tr><td>Hodnota</td><td>Hodnota2</td><td>Hodnota3</td></tr> a potřebuji jej vypsat jako poslední hodnotu před </table>
Radovan789
Profil *
_es:
A nejhorší na tom je že všechno zobrazuje staticky: takže <b>Tučně</b> se zobrazí staticky, takže pro mě nepoužitelné.
Chamurappi
Profil
Reaguji na Radovana789:
1. Data tě vkládají na začátek tabulky? Metoda insertRow má argument určující pozici, to bys zjistil, kdyby sis na ten odkaz ráčil kliknout.
2. Tak zavoláš jednou insertRow a třikrát insertCell.

všechno zobrazuje staticky: takže <b>Tučně</b> se zobrazí staticky
Nerozumím, co znamená statické zobrazování. Tučnost je dynamická?
Na buňkách tabulky už innerHTML normálně funguje.
_es
Profil
Chamurappi:
Metoda insertRow má argument určující pozici, to bys zjistil, kdyby sis na ten odkaz ráčil kliknout.
Radovan789: A ešte malá rada: počet riadkov zistíš z tabuľka.rows.length.
Radovan789
Profil *
Chamurappi:
Na buňkách tabulky už innerHTML normálně funguje.
Docela dost klíčová informace, potomhle jsem si řekl že JS je na tom dost špatně.


...

Díky za všechny rady. Jen jsem se zasek u toho že mě to ukazuje [object Text] Kód teďka vypadá takhle:

var table = document.getElementById("calc_main_table");
var tr = document.createElement("tr");
table.appendChild(tr);
var td = document.createElement("td");
text = document.createTextNode("<b>text goes here</b>");
table.appendChild(td);
td.innerHTML = text;
Radovan789
Profil *
aha už jsem upravil:
text = document.createTextNode("<b>text goes here</b>");
na
text ="<b>text goes here</b>";

a jede. Tak je to asi vše. Děkuji za tuhle večerní diskusi.
Chamurappi
Profil
Reaguji na Radovana789:
Proč dáváš <td> do <table>? Buňka tabulky patří do řádku, ne? A řádek patří do <tbody>.
Kdybys používal metody zmíněné _esem a mnou, nemusel bys přemýšlet, co do čeho patří.
Radovan789
Profil *
Chamurappi:
Nakonec jsem to udělal tímto spůsobem:

var table = document.getElementById("calc_main_table");

var tr = document.createElement("tr");
table.appendChild(tr);

var td = document.createElement("td");
tr.appendChild(td);
td.innerHTML = '<input type="text" class="kalkulacni_input">';

var td = document.createElement("td");
tr.appendChild(td);
td.innerHTML = '<select><option value="">Ne</option><option value="">Ano</option></select>';

var td = document.createElement("td");
tr.appendChild(td);
td.innerHTML = '<select><?php echo $dreviny; ?></select>';

var td = document.createElement("td");
tr.appendChild(td);
td.innerHTML = '<input type="text" class="kalkulacni_input">';

var td = document.createElement("td");
tr.appendChild(td);
td.innerHTML = '<input type="text" class="kalkulacni_input">';

var td = document.createElement("td");
tr.appendChild(td);
td.innerHTML = '<span id=""></span>';


Bohužel to ještě pořád není dokonalý řešení, vše funguje ale zdá se mi že se neuzavírá TR protože se mezi řádkami nedělá border.
Radovan789
Profil *
A ten border to nedělá jen v Mozzile. Ach ta nekompaktibilita ...
Chamurappi
Profil
Reaguji na Radovana789:
Bohužel to ještě pořád není dokonalý řešení
Předpokládám, že nefunguje správně ve všech prohlížečích, protože přidáváš řádek do <table> a ne do <tbody>.

nekompaktibilita
Bez K.
Radovan789
Profil *
Chamurappi:
Díky za radu, už vše jede jak má, poprvé jsem použil tbody v praxi.
Radovan789
Profil *
Chamurappi:
Ale stejně pořád nechápu ten JavaScript, proč do buňky innerHTML povolí a do table ne. Mají vtom pěkný nepořádek. Kdo vůbec určuje v jakých elementech innerHTML pojede ?
_es
Profil
Radovan789:
Kdo vůbec určuje v jakých elementech innerHTML pojede ?
Nikto, innerHTML je úplne mimo nejakých noriem či doporučení W3C. Je to metóda nejakej dávnej verzie IE, ktorú od neho neskôr "opísali" aj iné prehliadače.
Chamurappi
Profil
Reaguji na Radovana789:
Eric Vasilik :-)
Tuším, že problém je jen s elementy <table>, <tbody>, <thead>, <tfoot>, <tr>, <colgroup>, <select>, <html>, <head>, <title>, <style> a <frameset>.
Radovan789
Profil *
Chamurappi:
Tak díky za upřesnění a za rady během řešení mého problému.

OT: Krásný pán :))

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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