[ Iznogud @ 14.01.2003. 22:13 ] @
Kako da pomocu JavaScripta kreiram tabelu u HTML dokumentu?
Problem je sto ne znam unapred koliko ce redova ta tabela imati jer
to zavisi od akcija korisnika i nekih podataka koje JavaScript-om citam iz cookies-a. Takodje bi trebalo da se napravi i mogucnost brisanja nekog reda iz tabele.
Dakle, dinamicka tabela i JS.

[Ovu poruku je menjao Iznogud dana 15.01.2003. u 00:22 GMT]

nKtag5 nKtagHistory nKtagDOM

[Ovu poruku je menjao noviKorisnik dana 05.05.2006. u 16:56 GMT+1]
[ broker @ 14.01.2003. 22:22 ] @
Svaku tabelu ces lako napraviti sa dve ugnjezdene petlje, jedna broji redove druga kolone... pa udri do zore koliko ti treba redova i kolona...
[ Iznogud @ 14.01.2003. 22:24 ] @
To je i meni prvo palo napamet. Ali kako da brisem odredjeni red iz tabele?
[ broker @ 14.01.2003. 22:34 ] @
Da brišeš red? HTML je statičan dokument, što jednom u njega upišeš nema brisanja. Možeš da petljašp sa layer-ima pa dapostigneš naki takav efekat ali najbolji način jeoduvek bio: reload dokumenta pa da izgeneriše sadržaj ispočetka i ne prikaže onaj podatak koji je obrisan.
[ -zombie- @ 14.01.2003. 23:51 ] @
mozda ti ovo pomogne... (da ideju ;)

http://javascript.internet.com/forms/dynamic-table-demo.html

stvarno impresivno..

inace, sad izbacuje neke greske, ali ranije (gledao sam sa ie5 ili 5.5) je sljakalo super. mozda samo treba nesto srediti...

[ bzero @ 15.01.2003. 00:15 ] @
Mogu i da se dodaju i da se brisu redovi u tabeli iz javascripta, jednom kada je dokument ucitan. HTML nije tako "statican", kao sto je bio nekad.

Jedan od linkova gde mozes da vidis kako se to radi:

http://msdn.microsoft.com/libr...orkshop/author/dhtml/dhtml.asp

pa potrazi "How to Build Tables Dynamically".

Problem je u tome sto ovakva resenja rade uglavnom samo na IE, eventualno na Netscape-u 6+, pa ti razmisli da li ti se isplati da koristis tako nesto. Evo i parce koda koje dodaje/brise redove u tabeli (ovo radi samo u IE):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function add_row()
{
var oRow;
oRow = oTable.insertRow();
oCell = oRow.insertCell();
oCell.innerText = "red " + (oRow.rowIndex + 1);
}
function delete_row()
{
var oRow;
var t =oTable.rows.length;
if(t > 0){
oRow = oTable.deleteRow(t-1);
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<button onClick="add_row()">add row</button> <button onClick="delete_row()">delete row</button>
<BR> <BR>
<TABLE id="oTable" border=1>
<TR>
<TD>prvi red</TD>
</TR>
<TR>
<TD>drugi red</TD>
</TR>
</TABLE>
</BODY>
</HTML>
[ Iznogud @ 15.01.2003. 19:07 ] @
Citat:
bzero:
function add_row()
{
var oRow;
oRow = oTable.insertRow();
oCell = oRow.insertCell();
oCell.innerText = "red " + (oRow.rowIndex + 1);
}

Ovo sjajno funkcionise.
Jos samo jedno pitanjebih imao - da li sada moguce unutar ovakovo generisane celije, staviti neki textBox ili button i kako?

[ Iznogud @ 15.01.2003. 23:10 ] @
Nasao sam kako ALI mi nedostaje jo jedna "sitnica" Naime resenje je sledece:

function add_row(X)
{
oCell3 = oRow.insertCell();
oCell3.width="5%";
oCell3.innerHTML = "<input name=textfield type=text size=5>"
}

Problem je sledeci: ova funkcija se poziva iz jedne for petlje i svak iput se prenosi druga vrednost X. Kako proslediti textfield-u da mu je value=X.
Pokusaj tipa:
oCell3.innerHTML = "<input name=textfield type=text size=5 value=X>"
nije dao rezultat jer ovo X tretira kao string a ne kao promenjivu.
Jel ima neko ideju????

PS: Gde mogu da nadjem listu metoda i atributa (tipa insertCell(), innerHTML..) koje se primenjuju nad objektima. Imam nekoliko e-book-ova o JS ali se to nigde ne pominje.



[ -zombie- @ 16.01.2003. 00:41 ] @
Code:

oCell3.innerHTML = "<input name=textfield type=text size=5 value='"+X+"'>";


obrati paznju da sam pred kraj prvog, i na pocetku drugog stringa (oko vrednosti X) dodao single navodnike 'X' da bi rezultat bio <input ... value='vrednostX'> sto je pametno zbog mogucih praznina i specijalnih znakova u promenjivoj X

inace, ako koristish DW 4 ultradev ili MX, pogledaj 'references' tab, tamo ima dobra O'Raily-ova referenca za HTML, CSS, i JavaScript (i josh ponesto)

mozda se moze naci i negde na oraily.org (com?) sajtu ako nemash dw, ali mene je mrzelo da trazim...
[ Iznogud @ 16.01.2003. 09:50 ] @
Funkcionise sjajno. Imam jos samo dva pitanja i mozemo zatvoriti temu.
Kao sto sam rekao funkcija:

function add_row(X) {
......
oCell3.innerHTML = "<input name=textfield type=text size=5 value='"+X+"'>";
......
}

se poziva iz petlje tako da se u zavisnosti od brojaca u petelji formira
veci broj instanci oCell-a a s njim i textfield-a (kroz "<input name=textfield type=text size=5 value='"+X+"'>".
Naovaj nacin svako textfield dobija isto ime ("textfield"). Da li je moguce u svakom pozivu funkcije add_row(X) dati drugo ime textfield-u?
A ovo pitanje je povezano sa drugim: kakao se dakle referencirati na neki od textfield-va da bi mu se procitao sadrzaj (value). Nesto kao textfield.value stim da bi textfield imao neki index koji bi ga razlikovao od ostalih.

[ -zombie- @ 17.01.2003. 01:34 ] @
pa morash imati nesto po cemu ces "identifikovati" svaki text field. znaci, recimo ako hoces po rednom broju BR da identifikujesh text polje, evo primer:

Code:

oCell3.innerHTML = "<input id='textfield_"+BR+"'name=textfield type=text size=5 value='"+X+"'>";

//...

val=document.getElementById('textfield_'+BR).value;


ovo bi trebalo da radi. ako hoces i da "submitujesh" sve te podatke na neki server, ubaci i name='textfield_"+BR+"' atribut u <input> tag...
[ Goran Rakić @ 17.01.2003. 10:31 ] @
Ovo nemaš u knjigama zato što ovo nisu metode nad objektima koje su podržane od strane w3c-a i ECMA Scripta. Ovo su IE specific rešenja koja treba izbegavati u širokom luku.
[ -zombie- @ 17.01.2003. 20:29 ] @
ne! apsolutno nisi u pravu.

document.all.id_kontrole je IE specifik resenje, ali

document.getElementById('id_kontrole') je valjda po DOM 2 standardu (nisam siguran 100%, ali znam sigurno da radi mozilli, a mislim i u operi)


a element.innerHTML takodje mislim da bi trebalo da radi u mozilli, ali o tome manje znam...