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:
        
    //létrehozzuk a táblát
    //egyelőre csak lóg a levegőben, nincs benne a DOM-ban,
    //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)
    var table = $('<table border="1">');
      
    //a táblába belepakolunk mindent
    $.each(ide_tomb, function(indexje, erteke) {
        table.append('<tr><td>'+indexje + ':</td><td>'+erteke+'</td></tr>');
    }); 
    
    //az így elkészített táblát beillesztjük a DOM-ba (ezzel láthatóvá válik)
    $('#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
$(document).ready(function(){ 
    $('#box1').click(function(){
        
        var ide_tomb = { kutya : 'tacsko', macska: 'angora', pocok : 'pezsma'}; //Ez nem tömb, hanem objektum
        
        var HtmlString = '<table border="1">'
        

        
        $.each(ide_tomb, function(indexje, erteke) {
            HtmlString += '<tr><td>'+indexje + ':</td><td>'+erteke+'</td></tr>';
        }); 
        
        HtmlString += '</table>';
        
        $('#box9').append(HtmlString);
        
    }); 
    
    
    $('#box2').click(function(){
        $('#box9').text( $('#box9').html());
		}); 

}); 
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á.