ugrás a tartalomhoz

JQ - Each - táblázat kiirasa - BUG ?

53éves_nagypapa · 2014. Május. 12. (H), 11.53
Egy tömb tartalmát iratnám ki.
Egy kétoszlopos táblázat lenne, bal oszlopban a kulcsok jobban az értékek.

Az each indulása előtt kiirom a table tagot.
Majd a ciklusban a tr és td tagot,
bele az adatokat majd lezarom a td tr tagokat,
és a ciklus után kiirom a /table vege tagot.

/Ahogy azt php-ben szoktam csinálni foreach esetén./


IGENÁM, DE A JQ AZ ELEJÉN AMIKOR KIIROM A TABLE TAGOT
magától kiegészíti A LEZÁRÓ /TABLE taggal.


Pedig azt majd én zárnám le a ciklus után.
Ettől ilyen lesz a táblázat.:
<table></table>
<tr><td></td></tr>

És ráadásul a ciklus után megirt /table -t meg nem irja ki.

Mi az okosság ilyenkor ?
 
1

Hogy csinálod?

Poetro · 2014. Május. 12. (H), 12.29
Tudnál kicsit több részletet írni. A HTML-t ugye egy stringként hozod létre ugye, majd jQuery-vel illeszted be, amikor készen van az egész táblázat? Ha nem, akkor miért nem úgy csinálod?
2

A kódod sokkal hasznosabb

bamegakapa · 2014. Május. 12. (H), 12.31
A kódod sokkal hasznosabb lenne, mint a kódod szöveges elbeszélése.

Illeszd be a kódodat, szépen formázd be, ha kedves akarsz lenni, még egy kis demót is készíthetsz belőle (pl. jsfiddle, pastebin, jsbin, stb.). Így nekünk is sokkal könnyebb lesz mind a problémát megtalálni, mind válaszolni, mind látni, hogy kb. milyen szinten állsz és mennyire kell részletesen magyarázni.
3

OKÉ - FELTETTEM A jsfiddle -RE

53éves_nagypapa · 2014. Május. 12. (H), 13.45
4

PHP-ban a szabvány kimenetre

kuka · 2014. Május. 12. (H), 14.02
PHP-ban a szabvány kimenetre írsz ki szöveget. Amit odaírsz azt legközelebb egy távoli gépen próbálja majd értelmezni egy böngésző.

jQuery közvetlenül egy létező dokumentum szerkezetébe szúr be elemeket, élőben. Amiért te a beszúrást több lépésben végzed, attól a dokumentum még minden lépés után szerkezetileg helyes kell legyen.

Más megfogalmazásban: lehetetlen a DOM-ba beszúrni egy nyitó table taget. (Azon a szinten már nem is léteznek tagek.) Csak table csomót szúrhatsz be, az pedig tagkét ábrázolva bizony egy nyitó és egy záró table tagből áll.
7

Jó kis demó ;). Ahogy kuka is

bamegakapa · 2014. Május. 12. (H), 14.23
Jó kis demó ;). Ahogy kuka is írja, az a probléma, hogy itt igazándiból nem HTML-el dolgozol, hanem a DOM-mal.

A legjobb megoldás az lenne, ha létrehoznál egy table-t (nem taget, hanem DOM node-ot/csomót), aztán ebbe pakolgatnád bele a táblasorokat, és mindennek a legvégén az egészet beillesztenéd a DOM-ba. Ez kb. így nézne ki:
  1.       
  2. //létrehozzuk a táblát  
  3. //egyelőre csak lóg a levegőben, nincs benne a DOM-ban,  
  4. //bár HTML-ként adjuk meg, de DOM node fog létrejönni (a $ egyik funkciója, hogy ha HTML-t adsz be neki, létrehoz DOM node-ot és visszaadja jQuery objektumként)  
  5. var table = $('<table border="1">');  
  6.     
  7. //a táblába belepakolunk mindent  
  8. $.each(ide_tomb, function(indexje, erteke) {  
  9.     table.append('<tr><td>'+indexje + ':</td><td>'+erteke+'</td></tr>');  
  10. });   
  11.   
  12. //az így elkészített táblát beillesztjük a DOM-ba (ezzel láthatóvá válik)  
  13. $('#box9').append(table);  
jsFiddle Demó
5

Ahogy Poetro mondta:

Pepita · 2014. Május. 12. (H), 14.05
Egyetlen $('#box9').append(HtmlString); legyen, a nyitótaget, ciklust, zárótaget előbb a HtmlString változóba írod.
6

Átírva a kódodat:

Pepita · 2014. Május. 12. (H), 14.14
  1. $(document).ready(function(){   
  2.     $('#box1').click(function(){  
  3.           
  4.         var ide_tomb = { kutya : 'tacsko', macska: 'angora', pocok : 'pezsma'}; //Ez nem tömb, hanem objektum  
  5.           
  6.         var HtmlString = '<table border="1">'  
  7.           
  8.   
  9.           
  10.         $.each(ide_tomb, function(indexje, erteke) {  
  11.             HtmlString += '<tr><td>'+indexje + ':</td><td>'+erteke+'</td></tr>';  
  12.         });   
  13.           
  14.         HtmlString += '</table>';  
  15.           
  16.         $('#box9').append(HtmlString);  
  17.           
  18.     });   
  19.       
  20.       
  21.     $('#box2').click(function(){  
  22.         $('#box9').text( $('#box9').html());  
  23.         });   
  24.   
  25. });   
8

VAuuu -- KÖSZÖNÖM !!!!!

53éves_nagypapa · 2014. Május. 12. (H), 15.58
Istenek vagytok !!
9

Az objektumokról még nem tudok semmit

53éves_nagypapa · 2014. Május. 12. (H), 16.08
Épp csak az alapját néztem meg, azt is a php oop -t.
Erre most csináltam egy objectum-ot. =8-)

Van még mit tanulnom ....
10

Nem gond

Pepita · 2014. Május. 12. (H), 20.40
Van még mit tanulnom ....

Mindenkinek van mit tanulnia, ha komolyan veszi a fejlesztést.
11

A Javascriptben az a mókás,

bamegakapa · 2014. Május. 12. (H), 22.56
A Javascriptben az a mókás, hogy tulajdonképpen minden objektum.

Hajrá.