Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml] JavaScript i childNodes[]
Forum PHP.pl > Forum > XML, AJAX
tiraeth
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
revyag
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
tiraeth
Dzięki, skorzystałem z tego drugiego sposobu smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.