Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [xml] JavaScript i childNodes[]
tiraeth
post 18.04.2006, 11:18:05
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


No jest problem sad.gif

Mam taki plik xml:
  1. <records>
  2.      <record>
  3.            <id>1234567</id>
  4.            <title>Lorem</title>
  5.      </record>
  6.      <record>
  7.            <id>1414141</id>
  8.            <title>ipsum</title>
  9.      </record>
  10.      <record>
  11.            <id>4242424</id>
  12.            <title>dolor</title>
  13.      </record>
  14.      <record>
  15.            <id>54412113</id>
  16.            <title>sit amet</title>
  17.      </record>
  18. </records>


W Javascript pobieram sobie dane... zmienna xml zawiera w sobie cały dokument xml
  1.      record = xml.getElementsByTagName("record");
  2.      result = "";
  3.  
  4.      for ( j=0; j<record.length; j++ )
  5.      {
  6.            tr = document.createElement("tr");
  7.            for ( i=0; i<3; i++ )
  8.            {
  9.                  td = document.createElement("td");
  10.                  td.innerHTML = record[j].childNodes[i].childNodes[0].nodeValue;
  11.                  tr.appendChild(td);
  12.            }
  13.            d.appendChild(tr);
  14.      }


No i niestety nie wyświetla mi to tak jak powinno być... w tym problem, że tak jakby nawet zamknięcie Node'a było brane pod uwagę przy childNodes[i]... już sam nie rozumiem sad.gif

HELP
Go to the top of the page
+Quote Post
revyag
post 18.04.2006, 12:19:05
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

Ostrzeżenie: (0%)
-----


1. Pierwsze rozwiązanie (krótkie): smile.gif
Zlikwiduj białe znaki wewnątrze tagów record, tzn. zapisz to tak:
  1. <record><id>1234567</id><title>Lorem</title></record>

musisz jeszcze w pętli:
Kod
for ( i=0; i<3; i++ )

zmienić warunek końca na 2, bo masz dwa elementy wewnątrz taga record.

2. Drugie rozwiązanie:
Kod
for ( j=0; j<record.length; j++ )
    {
        tr = document.createElement("tr");
        
        for ( i=0; i<record[j].childNodes.length; i++ )
        {
            if(record[j].childNodes[i].hasChildNodes()) {
                td = document.createElement("td");
                td.innerHTML = record[j].childNodes[i].childNodes[0].nodeValue;
                tr.appendChild(td);
            }
        }
        d.appendChild(tr);
    }


poza tym tabela musi mieć taką konstrukcję:
  1. <table cellpadding="1" cellspacing="1">
  2. <tbody id="d">


Wiersze dopisujesz to tbody. Inaczej na IE nie zadziała smile.gif


--------------------
-------------

------
Go to the top of the page
+Quote Post
tiraeth
post 18.04.2006, 13:01:57
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Dzięki, skorzystałem z tego drugiego sposobu smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.06.2025 - 10:14