Autor | Zpráva | ||
---|---|---|---|
Stewe Profil * |
#1 · Zasláno: 19. 5. 2015, 11:07:54 · Upravil/a: Moderátor (editace znemožněna) 22. 5. 2015, 13:33:46
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 |
#2 · Zasláno: 19. 5. 2015, 11:32:31
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 * |
#3 · Zasláno: 19. 5. 2015, 11:36:43 · Upravil/a: Stewe
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 * |
#4 · Zasláno: 19. 5. 2015, 14:16:09
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. |
||
Časová prodleva: 6 let
|
0