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 |
#2 · Zasláno: 18. 11. 2010, 20:06:57
Radovan789:
Projdi si funkce createElement() a appendChild(). |
||
_es Profil |
#3 · Zasláno: 18. 11. 2010, 20:19:48
Radek9:
„Projdi si funkce createElement() a appendChild().“ V tabuľkách funguje aj jednoduchšie použiteľná metóda insertRow. |
||
Radovan789 Profil * |
#4 · Zasláno: 18. 11. 2010, 20:26:57
_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 * |
#5 · Zasláno: 18. 11. 2010, 20:34:02
_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 |
#6 · Zasláno: 18. 11. 2010, 20:43:32
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 |
#7 · Zasláno: 18. 11. 2010, 20:48:39 · Upravil/a: _es
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 * |
#8 · Zasláno: 18. 11. 2010, 20:54:11
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 * |
#9 · Zasláno: 18. 11. 2010, 20:56:29
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 |
#10 · Zasláno: 18. 11. 2010, 20:58:34
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 * |
#11 · Zasláno: 18. 11. 2010, 21:03:58
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 * |
#12 · Zasláno: 18. 11. 2010, 21:06:14
A ten border to nedělá jen v Mozzile. Ach ta nekompaktibilita ...
|
||
Chamurappi Profil |
#13 · Zasláno: 18. 11. 2010, 21:07:10 · Upravil/a: Chamurappi
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 * |
#14 · Zasláno: 18. 11. 2010, 21:10:19
Chamurappi:
Díky za radu, už vše jede jak má, poprvé jsem použil tbody v praxi. |
||
Radovan789 Profil * |
#15 · Zasláno: 18. 11. 2010, 21:14:22
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 |
#16 · Zasláno: 18. 11. 2010, 21:20:26
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 |
#17 · Zasláno: 18. 11. 2010, 21:25:01
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 * |
#18 · Zasláno: 18. 11. 2010, 21:28:40
Chamurappi:
Tak díky za upřesnění a za rady během řešení mého problému. OT: Krásný pán :)) |
||
Časová prodleva: 13 let
|
0