Avatar billede minus Nybegynder
01. oktober 2009 - 15:24 Der er 2 kommentarer og
1 løsning

Visning af XML

Hej eksperter,

Jeg har et xml-dokument, jeg gerne vil have vist på en bestemt måde.


----

Udsnit fra xml:

<ads>
<row>
<tit>Overskrift</tit>
<des>Her er en beskrivelse</des>
<top>http://google.dk</top>
<pr>pris (heltal)</pr>
</row>
<row>
<tit>Overskrift 2</tit>
<des>Her er en ny beskrivelse</des>
<top>http://google.com</top>
<pr>ny pris (heltal)</pr>
</row>
</ads>

------

Der findes 20 af ovenstående <row> (med <tit><des><top><pr>), som er inde i "<ads>".

Er der nogen, som kan lave et mindre javascript eller php kode, som tager disse 20 posteringer i tilfældig rækkefølge hver gang og viser dem én ad gangen. Det vises i 7 sekunder, hvorefter en anden vises frem i 7 sekunder osv.

Indholdet af ovenstånde hentes fra et eksternt xml-dokument.

Det skal vises således:
- Overskrift står for sig selv med bold i toppen.
- To linjeskift under står beskrivelse.
- To linjeskift derunder står prisen.
- Det hele er et stort link (til <top>).

Hvis jeg har været for hurtig at formulere mig, så er i velkomne til at spørge ind :)

Jeg siger tak på forhånd.
Avatar billede minus Nybegynder
01. oktober 2009 - 16:02 #1
Det skal lige siges at XML-dokumentet er i en php-fil, som generere xmlkoden ud fra indhold i database.
Avatar billede tjens Nybegynder
01. oktober 2009 - 23:23 #2
Demo:
http://tjens.dk/javascript/examples/AddsFromXml/index.html

Kode:

<html>
<head>
<title>Loop XMLadds Demo</title>
<style>
.addArea { border: 1px solid black; width: 250px; height: 200px;padding: 10px 10px 10px 20px; }
#addLink { text-decoration: none; color: black;}
</style>
<script type="text/javascript">

var xmlhttp;
var msgID;
var addsArray;
var addsCount = 0;
var nextAdd = 0;

function initAjax()
{
    msgID = document.getElementById("MsgDiv");

    if (window.XMLHttpRequest) { // code for Mozilla, Safari, ** And Now IE 7 **, etc
        xmlhttp=new XMLHttpRequest();
    } else if (window.ActiveXObject) { //IE
        xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
    }
    if (typeof(xmlhttp)=='object') {
        xmlhttp.onreadystatechange=xmlFileReady;
        xmlhttp.open('GET', "adds.xml", true);
        xmlhttp.send(null);
    }
    msgID.firstChild.nodeValue="Loading...";
   
}
function xmlFileReady() {
    if (xmlhttp.readyState==4) {
      if (xmlhttp.status==200) {
            msgID.firstChild.nodeValue="";
            startAdds(xmlhttp.responseXML.documentElement);
        }
        else {
            msgID.firstChild.nodeValue= "ERROR. " + xmlhttp.statusText;
        }
      }
}

function startAdds(xmlDoc) {
    addsArray = xmlDoc.getElementsByTagName("row");
    addsCount = addsArray.length;
    showAdds();
}

function showAdds() {
    if (nextAdd >= addsCount) {
        nextAdd = 0;
    }
   
    document.getElementById("addheader").firstChild.nodeValue = addsArray[nextAdd].getElementsByTagName("tit")[0].firstChild.nodeValue;
    document.getElementById("addtext").firstChild.nodeValue = addsArray[nextAdd].getElementsByTagName("des")[0].firstChild.nodeValue;
    document.getElementById("addprice").firstChild.nodeValue = addsArray[nextAdd].getElementsByTagName("pr")[0].firstChild.nodeValue;
    document.getElementById("addlink").href = addsArray[nextAdd].getElementsByTagName("top")[0].firstChild.nodeValue;
   
    nextAdd++;
    setTimeout("showAdds()", 3000);
}

</script>
</head>
<body onload="initAjax();">
<div id="MsgDiv">
Your browser does not support the scripts on this page
</div>
<a id="addlink" href="">
    <div class="addArea">
        <h4 id="addheader"> </h4>
        <p id="addtext"> </p>
        <p id="addprice"> </p>
    </div>
</a>
</body>
</html>
Avatar billede minus Nybegynder
02. oktober 2009 - 11:32 #3
Mange tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester