Autor Zpráva
Stewe
Profil *
Ahoj, mám jednoduchý script který mi převádí XML na tabulku.

Občas se stane že v XML chybí některé buňky a script se v tomto místě zastaví a dál nepokračuje nejde to nějak ošetřit? Zkoušel jsem if - else ale nedaří se mi.

Děkuji za korekci.

<script>
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","zmeny.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

document.write("<table><tr><th>Změna</th><th>číslo</th><th>Datum</th><th>Stroj</th></tr>");
var x=xmlDoc.getElementsByTagName("VYMENY1");
for (i=0;i<x.length;i++)
  { 
  document.write("<tr><td>");
  document.write(x[i].getElementsByTagName("ZMENOU")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("CISLO")[0].childNodes[0].nodeValue);
  document.write("</td><td>")
  document.write(x[i].getElementsByTagName("DATUM")[0].childNodes[0].nodeValue);
  document.write("</td><td>")
if (("STROJ") == "undefined") { B  }
else {  document.write(x[i].getElementsByTagName("STROJ")[0].childNodes[0].nodeValue);}
   document.write("</td></tr>"); 
  }
document.write("</table>");
</script>
Moderátor Chamurappi: Titulek upraven z původního „xml na tabulku“ podle návrhu.
Chamurappi
Profil
Reaguji na Stewe:
Duplicitní? Pokud řešíš něco úplně jiného, neměl bys vlákno nazývat úplně stejně. On je to dost blbý název i pro to první vlákno. To je tak těžké jednoznačně shrnout dotaz do pár slov? Navrhni lepší název pro oba dotazy a já je přejmenuji.

if (("STROJ") == "undefined") { B  }
Řetězec "STROJ" se nikdy nerovná řetězci "undefined". Co by mělo dělat to B? Není povinnost mít v bloku příkazů nějaký příkaz.
Pokud element <STROJ> neexistuje, tak je undefined (nikoliv "undefined") v x[i].getElementsByTagName("STROJ")[0], stačí tedy podmínit vypsání if(x[i].getElementsByTagName("STROJ")[0]) document.write(…). Nebo můžeš testovat, jestli je x[i].getElementsByTagName("STROJ").length vyšší než nula.
Stewe
Profil *
Založil jsem to dvakrát protože jeden dotaz se týkal XML souboru a jeho adrese a tento se zas týká Javascriptu.

Výstižnější název?
JSC - Podmínka pro neexistující proměnou
Xml - Adresování XML v soubororvém systému

Mohlo by být?

Děkuji za rady :) jdu to otestovat


Děkuji za rady.

Projel jsem všechny možnosti a funguje toto:

if(x[i].getElementsByTagName("STROJ")[0]) 
  {
  document.write(x[i].getElementsByTagName("STROJ")[0].childNodes[0].nodeValue);
  }
else
  {
  document.write("")
  }



Ještě nastal jeden menší problém.

Protože access ze kterého beru XML exporty, dělá nepořádek v řádkování a nedodržuje nastavené třídění ( prostě si exportuje řádky podle svého)

Dá se nějak výsledná tabulka roztřídit. Stačí mi jednoduché třídění podle čísla.

Na webu jsem našel složité a neuplné scripty. Nejde to pomocí array.sort ?
Stewe
Profil *
Tak jsem našel tento script https://neil.fraser.name/software/tablesort/

Funguje výborně je snadný na použití s minimem zásahů do kodu.
Jen neumí automaticky vytřídit výsledky po načtení. Což je škoda.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0