Dynamiczne dodawanie wiersza tabeli
- 29-03-2006 00:28
Dynamiczne dodawanie wiersza tabeli
Witam, Oto kod JS:
var gdzie=document.getElementById('morefields'); var newline='<tr><td><input type="checkbox"><td>1<td><input type="text"><td><input type="text"><td><input type="checkbox">' +'<td><input type="text"><td><input type="text"><td><input type="text"></tr>'; gdzie.appendData(newline);
Oto fragment htmla: <table id="morefields">
I teraz pytanie- jak to zrobic, zeby to dzialalo?
Pozdrawiam, Talthen
ethanak - 30-03-2006 00:15
talthen.z-serwera.o2@nospam.pl napisał(a): > Witam, > Oto kod JS: > > var gdzie=document.getElementById('morefields'); > var newline='<tr><td><input type="checkbox"><td>1<td><input > type="text"><td><input type="text"><td><input type="checkbox">' > +'<td><input type="text"><td><input type="text"><td><input > type="text"></tr>'; > gdzie.appendData(newline); > > Oto fragment htmla: > <table id="morefields"> > > I teraz pytanie- jak to zrobic, zeby to dzialalo?
Po pierwsze: appendData jest dla typu text. Po drugie - musisz mieć tbody (nie chce mi się wyjaśniać dlaczego), czyli najprościej by było:
<table> <tbody id="morefields">
I dalej na przykład:
var gdzie=document.getElementById('morefields'); var newline='<td>....'; /* bez tr */ var tr=document.createElement('tr'); tr.innerHTML=newline; gdzie.appendChild(tr);
ethanak -- mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20='); /* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie. To jest ewidentna bezczelność! S. Friedmann/J. Kofta */
Artur M. Piwko - 30-03-2006 00:15
In the darkest hour on Wed, 29 Mar 2006 09:03:57 +0200, ethanak <sweethanak@buziaczek.pl> screamed: > Po pierwsze: appendData jest dla typu text. > Po drugie - musisz mieć tbody (nie chce mi się wyjaśniać dlaczego),
Musi mieć tbody jeśli chce by działało w niebieskim e.
-- [ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:222B ] [ 10:09:33 user up 10930 days, 22:04, 1 user, load average: 0.06, 0.06, 0.06 ]
MS-DOS: Maybe SomeDay an Operating System.
- 30-03-2006 00:15
Użytkownik "ethanak" <sweethanak@buziaczek.pl> napisał w wiadomości news:e0dbgc$248$1@news.onet.pl... > Po pierwsze: appendData jest dla typu text. > Po drugie - musisz mieć tbody (nie chce mi się wyjaśniać dlaczego), czyli > najprościej by było: > > <table> > <tbody id="morefields"> > > I dalej na przykład: > > var gdzie=document.getElementById('morefields'); > var newline='<td>....'; /* bez tr */ > var tr=document.createElement('tr'); > tr.innerHTML=newline; > gdzie.appendChild(tr);
Tak tez probowalem (ale bez tbody) i to nie dziala jak trzeba (nawet z tbody). Wszystko laduje w pierwszej kolumnie nowego wiersza (tam jakby tagi <td> w newline byly zupelnie ignorowane).
Pozdrawiam, Talthen
ethanak - 31-03-2006 00:17
On 2006-03-29 20:33, talthen.z-serwera.o2@nospam.pl wrote: [...] > Tak tez probowalem (ale bez tbody) i to nie dziala jak trzeba (nawet z > tbody). > Wszystko laduje w pierwszej kolumnie nowego wiersza (tam jakby tagi <td> w > newline byly zupelnie ignorowane).
Fakt - ciekawe... wygląda na to że przeglądarki nie radzą sobie z utworzeniem (poprzez podstawienie do innerHTML) czegoś co nie jest kompletną tabelą - ktoś coś wie na ten temat?
W FF poszło cos takiego:
vat tbody=document.createElement('tbody'); tbody.innerHTML='<tr><td>.....';
ale IE już się na to wypiął.
Rozwiązanie (tym razem sprawdzone FF, IE, Opera, Konqueror)
var gdzie=document.getElementById('morefields'); var co="<table><tr><td>Kolumna 1</td><td>Kolumna2</td></tr></table>"; var div=document.createElement('div'); div.innerHTML=co; gdzie.appendChild(div.getElementsByTagName('tr')[0]);
i oczywiście <tbody id="morefields">
ethanak -- mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20=');
- 31-03-2006 00:17
Użytkownik "ethanak" <sweethanak@buziaczek.pl> napisał w wiadomości news:e0fpph$qls$1@news.onet.pl... >Rozwiązanie (tym razem sprawdzone FF, IE, Opera, Konqueror)
>var gdzie=document.getElementById('morefields'); >var co="<table><tr><td>Kolumna 1</td><td>Kolumna2</td></tr></table>"; >var div=document.createElement('div'); >div.innerHTML=co; >gdzie.appendChild(div.getElementsByTagName('tr' )[0]); >i oczywiście <tbody id="morefields">
No tak, ale robienie dla kazdego wiersza nowej tabeli to troche takie... hm... dziwne ;/ I czy przypadkiem te tabelki nie beda nieco rozjechane (tzn. inne szerokosci kolumn)?
Pozdrawiam, Talthen
ethanak - 31-03-2006 00:17
talthen.z-serwera.o2@nospam.pl napisał(a): > Użytkownik "ethanak" <sweethanak@buziaczek.pl> napisał w wiadomości > news:e0fpph$qls$1@news.onet.pl... > >>Rozwiązanie (tym razem sprawdzone FF, IE, Opera, Konqueror) [...] > > No tak, ale robienie dla kazdego wiersza nowej tabeli to troche takie... > hm... dziwne ;/
Zawsze możesz spróbować przez
var tr=document.createElement('tr'); var td=document.createElement('td'); td.innerHTML='cośtam'; tr.appendChild(td);
ale chyba nie o to Ci chodziło? Poza tym tworzenie inputów poprzez createElement już przerabiałem i oczywiście nIEktóre programy przypominające przeglądarki mają z tym Poważne Problemy :)
> I czy przypadkiem te tabelki nie beda nieco rozjechane (tzn. inne szerokosci > kolumn)?
A dlaczego mają być inne? Sprawdź i zapodaj co wyszło, sam ciekaw jestem a nie mam czasu sprawdzić.
ethanak -- mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20='); /* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie. To jest ewidentna bezczelność! S. Friedmann/J. Kofta */
- 31-03-2006 00:17
Użytkownik "ethanak" <sweethanak@buziaczek.pl> napisał w wiadomości news:e0gb96$m5e$1@news.onet.pl... > Zawsze możesz spróbować przez > > var tr=document.createElement('tr'); > var td=document.createElement('td'); > td.innerHTML='cośtam'; > tr.appendChild(td); To juz przerabialem, ze duzo kodu by bylo.
> A dlaczego mają być inne? Sprawdź i zapodaj co wyszło, sam ciekaw jestem a > nie mam czasu sprawdzić. Bo tabelki w tabelkach, ale jednak wyglada dobrze, a zwykly smiertelnik i tak nie zobaczy kodu ;] Dzieki.
Pozdrawiam, Talthen
Artur Muszynski - 31-03-2006 00:17
> Fakt - ciekawe... wygląda na to że przeglądarki nie radzą sobie z > utworzeniem (poprzez podstawienie do innerHTML) czegoś co nie jest > kompletną tabelą - ktoś coś wie na ten temat?
Na MSDN (How to build tables dynamically) jest zdanie: Note When using Dynamic HTML (DHTML) to create a document, you can create objects and set the innerText or innerHTML property of the object. However, because of the specific structure required by tables, the innerText and innerHTML properties of the table and tr objects are read-only.
artur
> ethanak
ethanak - 31-03-2006 00:17
Artur Muszynski napisał(a): [...] > > However, because of the specific structure required by tables, > the innerText and innerHTML properties of the table and tr objects are > read-only.
Kurde, codziennie się człowiek czegoś nowego dowiaduje :)
Thx
ethanak -- mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20='); /* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie. To jest ewidentna bezczelność! S. Friedmann/J. Kofta */
Elus - 01-04-2006 00:21
talthen.z-serwera.o2@nospam.pl napisał(a): > Witam, > Oto kod JS: > [...]
insertRow(): http://www.mozilla.org/docs/dom/domr...tml_ref31.html http://msdn.microsoft.com/workshop/a.../insertrow.asp
Przykładzik: http://groups.google.com/group/pl.co...7b25551912b51e
- 01-04-2006 00:21
Użytkownik "Elus" <ROT13.ryhf@jub.irpgenarg.cy> > insertRow():
Fajne, nawet w Operze dziala, tylko i tak musze wowczas jakos dorobic <td> i <input>, wiec problem praktycznie sprowadza sie do tego samego. Zostane przy rozwiazaniu pana ethanaka :)
Pozdrawiam, Talthen
Artur Muszynski - 02-04-2006 00:11
talthen.z-serwera.o2@nospam.pl wrote: > Użytkownik "Elus" <ROT13.ryhf@jub.irpgenarg.cy> >> insertRow(): > > Fajne, nawet w Operze dziala, tylko i tak musze wowczas jakos dorobic > <td>
insertCell()
i <input>, wiec problem praktycznie sprowadza sie do tego > samego. Zostane przy rozwiazaniu pana ethanaka :)
W sumie używanie DOM i TOM do budowania tabel jest podobne, więc jak wolisz. Zobacz, że masz jeszcze kolekcje rows i cells, więc w sumie TOM jest wygodniejsze.
artur
> > Pozdrawiam, > Talthen
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
Tworzenie tabeli z =?ISO-8859-2?Q?nazw=B1_ustalan=B1_przez_?==?ISO-8859-2?Q?usera?=
=?ISO-8859-2?Q?Zawarto=B6=E6_tabeli_na_podstawie_warto=B6?==? ISO-8859-2?Q?ci_w_innej?=
MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
=?iso-8859-2?Q?=5BSQL_Server_2000=5D_uprawnienienia_do_u=BFyw ania_widoku_?==?iso-8859-2?Q?opartego_na_tabeli_z_innej_bazy?=
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
Liczba =?ISO-8859-2?Q?odpowiadaj=B1cych_rekord=F3w_z_drugi?==?ISO-8859-2?Q?ej_tabeli?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
=?iso-8859-2?q?[ms_sql]_Sprawdzenie_kto_usun=B1=B3_dane_w_tabeli_=3F?=
=?iso-8859-2?q?zapytanie_mysql_-_podw=F3jne_odniesienie_do_jednej_tabeli=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plmarcelq.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|