[ Príspevkov: 8 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.09.10
Prihlásený: 30.10.14
Príspevky: 27
Témy: 10 | 10
NapísalOffline : 27.09.2010 0:12 | getElementById

Zdravim vsetkych ... ak mozte, poradte prosim. Y XML som parsovanim dostal tabulku v html .... kod nizsie ... viem zobrazit jednotlive tagy pomocou prikazu ...getElementByTagName ... ale potreboval by som vediet ako to funguje pomocou getElementById ... skusal som vsetko mozne, ale nejde to .......

priklad: namiesto var x = xmlDoc.getElementsByTagName("state1"); by sa dalo nieco ako var x = xmlDoc.getElementById('1'); ... akurat, ze mi to nefunguje :-(

XML: =>
Kód:
<state1>
      <name>Finland</name>
      <capital_city>Helsinky</capital_city>
      <year>1995</year>
      <extent>304 539</extent>
      <population>5,2 mil.</population>
   </state1>


HTML: =>
Kód:
<script type="text/javascript">
            if (window.XMLHttpRequest)
               {// code for IE7+, Firefox, Chrome, Opera, Safari
                  xmlhttp=new XMLHttpRequest();
               }
            else
               {// code for IE6, IE5
                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
               }
                  xmlhttp.open("GET","eu_states.xml",false);
                  xmlhttp.send();
                  xmlDoc=xmlhttp.responseXML;
               
          document.write("<table border='1'>");
         
          var x = xmlDoc.getElementsByTagName("state1"); 
             
          for (i=0;i<x.length;i++)
             {
                document.write("<tr><td width='100'>");
                document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
                document.write("</td><td width='100'>");
                document.write(x[i].getElementsByTagName("capital_city")[0].childNodes[0].nodeValue);
                document.write("</td><td width='100'>");
                document.write(x[i].getElementsByTagName("year")[0].childNodes[0].nodeValue);
                document.write("</td><td width='100'>");
                document.write(x[i].getElementsByTagName("population")[0].childNodes[0].nodeValue);
                document.write("</td></tr>");
            }
         document.write("</table>");
         
         
         
         </script>


Diki moc :-)


Offline

Užívateľ
Užívateľ
getElementById

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181 | 181
Bydlisko: Nitra / Bra...
NapísalOffline : 27.09.2010 8:21 | getElementById

no pretoze tam nemas element, ktory ma take id


_________________
Sorry za prelkepy
Offline

Čestný člen
Čestný člen
getElementById

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 27.09.2010 16:55 | getElementById

emer
Myslim, ze aj keby tam ten element mal, nic by mu to nepomohlo.
DonnieBrasco
getElementById vyhladava elementy nie podla atributu s nazvom "id", ale podla atributu, ktory je v DTD zadefinovany ako atribut typu ID (ak hovorime o HTML a XML ako o jazykoch zalozenych na SGML). Kedze bezny XML dokument DTD neobsahuje, neexistuje atribut, podla ktoreho by malo getElementById vyhladavat. Skusil som do XML dokumentu vlozit nasledovne:
Kód:
<!DOCTYPE r [
    <!ATTLIST foo    id    ID    #IMPLIED>
]>
r bol korenovy element a getElementById malo vyhladat element <foo id="abc"/>. Tento sposob fungoval jedine vo Firefoxe a Opere. Chrome evidentne internu podstatu DTD neparsuje, a teda getElementById() vyhadzovalo vzdycky null, Explorer sa k nejakej podpore getElementById v XML zrejme vobec nehlasi.
Ak som sa teda v nicom nepomylil, vychadza mi to tak, ze getElementById sa v beznych XML dokumentoch pouzit neda. Pouzivaj ine sposoby.
Este poucenie: pri synchronnych XMLHttpRequestoch (to je treti parameter XMLHttpRequest.open nastaveny na false) prehliadac navstevnika na chvilu zamrzne. Obzvlast neprijemne to moze byt napriklad pri lagujucom pripojeni. Vzdy pouzivaj asynchronne requesty, aj ked ten zapis kodu bude trosku zlozitejsi.
Edit: docital som sa, ze by sa mal dat pouzit atribut xml:id="nieco", ale znova, neviem, ako to bude s podporou, hlavne v pripade IE.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.09.10
Prihlásený: 30.10.14
Príspevky: 27
Témy: 10 | 10
Napísal autor témyOffline : 27.09.2010 17:04 | getElementById

Diki skusim .... s tym elementom obsahujuci id som to skusal, len ked to nefungovalo, nedaval som ho do mojej otazky a ako si sam zistil, neda sa to .. skusim to teda inak :-)


Offline

Čestný člen
Čestný člen
getElementById

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 27.09.2010 17:17 | getElementById

DonnieBrasco
Odporucam pozriet si nieco o JSON. Je to format, v akom sa v Javascripte zapisuju objekty. Mozes data vypisat v tom subore, ktory tahas XMLHttpRequestom a do premennej to ulozis nejak takto:
Kód:
if (window.JSON && window.JSON.parse)
{
   var vysledok=JSON.parse(xmlhttp.responseText);
}
else
{
   var vysledok=eval("("+xmlhttp.responseText+")");
}
Potom s premennou vysledok pracujes ako s beznym objektom. Velmi vyhodne a funguje vsade.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 27.09.2010 17:58 | getElementById

a co tak pouzit XPath?
v premennej "path" je cesta k elementom ktore maju id='test'
Kód:
<body>
<script type="text/javascript">
function loadXMLDoc(dname)
{
  if (window.ActiveXObject)
{
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(dname);
} else {
  parser=new DOMParser();
  xmlDoc=parser.parseFromString(dname,"text/xml");
}
return xmlDoc;
}

xml=loadXMLDoc("<bookstore><book ><title id='test'>Everyday Italian</title>  <author>Giada De Laurentiis</author>  <year>2005</year>  <price>30.00</price></book></bookstore>");
path="//*[@id='test']/node()";
// code for IE
if (window.ActiveXObject)
{
xml.setProperty("SelectionLanguage","XPath");
var nodes=xml.selectSingleNode(path);
document.write(nodes.nodeValue);
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE,null);
var result=nodes.iterateNext();

while (result)
  {
  document.write(result.nodeValue);
  document.write("<br />");
  result=nodes.iterateNext();
  }
}
</script>


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.09.10
Prihlásený: 30.10.14
Príspevky: 27
Témy: 10 | 10
Napísal autor témyOffline : 28.09.2010 20:21 | getElementById

Diki mic, ide mi to, len maly detail .... to id musim dat do kazdeho vnutorneho tagu ak chcem aby mi vsetky, v tvojom pripade info o knihe, zobrazilo ... sa len zacinam ucim . ... tak tieto veci moc neviem ... a este ja to chcem nacitat z xml-ka nie priamo ....


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 28.09.2010 21:46 | getElementById

no ved v mojom pripade tiez vytvaram xml no miesto pouzitia ajaxu ho vytvaram priamo inline.
v tvojom pripade
Kód:
xmlDoc=xmlhttp.responseXML;

skus si na nete pohladat nieco o xpath napr:
http://www.w3schools.com/Xpath/xpath_syntax.asp


 [ Príspevkov: 8 ] 


getElementById



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

getElementById(´bla´).src="kvakva.gif"

v JavaScript, VBScript, Ajax

6

652

05.01.2010 23:21

camo



© 2005 - 2024 PCforum, edited by JanoF