Avatar billede larsbaun Nybegynder
29. december 2002 - 13:36 Der er 11 kommentarer og
1 løsning

Svær XML opgave : Random Nyheds Ratation !

Jeg har et xml doc bestående af 20 nyheder

det ser sådan ud:

<?xml version="1.0" encoding="ISO-8859-1"?>
<allnews>
  <news id="13">
  <dato>19/12/02</dato>
  <headline>hot news computer</headline>
  <subheadine>5 gh pentium</subheadline>
  <smalltext>lirum larum barum</smalltext>
  <content>bla bla bla</content>
  <file type="gif">computer.gif</file>
  </news>

  <news id="12">
osv.......
</allnews>

Hvordan laves følgende.

Jeg vil have et table hvor 3 nyheder vises side om side.

___________________________________________________________
  random nyhed 1    | random nyhed 2      | random 3
_____________________|______________________|________
        |headline    |        |headline    |
billede |subheadline | billede |subheadline |  osv.
        |smalltext  |        |smalltext  |
-----------------------------------------------------------

Det skal være 3 tilældige nyheder og det må ikke være nogle af de 6 første nyheder, og det må ikke være 3 ens.

De skulle helst skiftes ud hvis hvis siden reloades.

Er der nogle der kan hjælpe mig !
Avatar billede tobias_cool Nybegynder
29. december 2002 - 17:49 #1
Det kan muligvis laves i Javascript-DOM men så virker det kun i IE. Er <news id="8"> er dem fra 1-6 de 6 første eller hvad?
Avatar billede larsbaun Nybegynder
29. december 2002 - 18:22 #2
Det er ok at det kun virker i IE.
news id nummeret stiger hver gang der kommer en ny nyhed.
Dvs. at de første 6 i dette tilfælde er.
13,12,11,10,9,8 og om 14 dage vil det sikkert være 41,40,39,38,37,36 og det er så dem der skal springes over , så vi kan vise de næste 6 nyheder!
Avatar billede larsbaun Nybegynder
30. december 2002 - 20:27 #3
Er der ingen der kan hjælpe her !
Avatar billede tobias_cool Nybegynder
30. december 2002 - 21:36 #4
jo men det vil tage lidt tid:
Sådan loder du din fil:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("Data.xml");
nodes=xmlDoc.documentElement.childNodes;
nodesl=nodes.length;
var Tal1
var Tal2
var Tal3
var starnr = nodesl - 6;
function TalValg(){
Tal1 = Math.floor(Math.Random()*starnr) + 1
Tal2 = Math.floor(Math.Random()*starnr) + 1
Tal3 = Math.floor(Math.Random()*starnr) + 1
if(Tal1 == Tal2){
Tal2 = Tal2 -1;
}
else if(Tal2 == Tal3){
Tal3 == Tal3 -2;
}
document.getElementById("News1").innnerHTML= Nodes[Tal1].childNodes[1].text + '<br>' + Nodes[Tal1].childNodes[2].text + '<br>' +Nodes[Tal1].childNodes[3].text
//osv.
}
//Den er ikke 100% sikker men den minimerer den matematiske sandsynlighed

<div id="News1"></div>
Avatar billede tobias_cool Nybegynder
30. december 2002 - 21:37 #5
Det er ikke testet. Men du har stillet et meget avanceret spørgsmål det indeholder helt sikkert nogle fejl skriv lige dem til mig, hvis du ikke selv kan rette dem
Avatar billede larsbaun Nybegynder
31. december 2002 - 00:25 #6
Jeg er ikke helt med ! Hvordan skal jeg ligge dine info. ind !

<html>
<head>
<script>
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("Data.xml");
nodes=xmlDoc.documentElement.childNodes;
nodesl=nodes.length;
var Tal1
var Tal2
var Tal3
var starnr = nodesl - 6;
function TalValg(){
Tal1 = Math.floor(Math.Random()*starnr) + 1
Tal2 = Math.floor(Math.Random()*starnr) + 1
Tal3 = Math.floor(Math.Random()*starnr) + 1
if(Tal1 == Tal2){
Tal2 = Tal2 -1;
}
else if(Tal2 == Tal3){
Tal3 == Tal3 -2;
}
document.getElementById("News1").innnerHTML=     Nodes[Tal1].childNodes[1].text + '<br>' + Nodes[Tal1].childNodes[2].text + '<br>' +Nodes[Tal1].childNodes[3].text
//osv.
}
//Den er ikke 100% sikker men den minimerer den matematiske sandsynlighed


</script>
</head>

<body bgcolor="blue">

<h1>xml news eks.</h1>


<xml id="news1" src="data.xml"></xml>
<table border="1" bgcolor="yellow">
<tr align="left"><th>dato:</th><td id="dato"></td></tr>
<tr align="left"><th>headline:</th><td id="headline"></td></tr>
<tr align="left"><th>subheadline:</th><td id="subheadline"></td></tr>
<tr align="left"><th>smalltext:</th><td id="smalltext"></td></tr>
<tr align="left"><th>content:</th><td id="content"></td></tr>
</table>

</body>
</html>

Du har mit text xml her :

<?xml version="1.0" encoding="ISO-8859-1"?>
<allnews>
  <news id="12">
  <dato>12/12/02</dato>
  <headline>headline 12 text eksempel</headline>
  <subheadline>subheadline 12 text eksempel</subheadline>
  <smalltext>smalltext 12 text eksempel</smalltext>
  <content>content 12 text eksempel</content>
  <file type="gif">pic12.gif</file>
  </news>

  <news id="11">
  <dato>11/12/02</dato>
  <headline>headline 11 text eksempel</headline>
  <subheadline>subheadline 11 text eksempel</subheadline>
  <smalltext>smalltext 11 text eksempel</smalltext>
  <content>content 11 text eksempel</content>
  <file type="gif">pic11.gif</file>
  </news>

  <news id="10">
  <dato>10/12/02</dato>
  <headline>headline 10 text eksempel</headline>
  <subheadline>subheadline 10 text eksempel</subheadline>
  <smalltext>smalltext 10 text eksempel</smalltext>
  <content>content 10 text eksempel</content>
  <file type="gif">pic10.gif</file>
  </news>

  <news id="9">
  <dato>09/12/02</dato>
  <headline>headline 9 text eksempel</headline>
  <subheadline>subheadline 9 text eksempel</subheadline>
  <smalltext>smalltext 9 text eksempel</smalltext>
  <content>content 9 text eksempel</content>
  <file type="gif">pic9.gif</file>
  </news>

  <news id="8">
  <dato>08/12/02</dato>
  <headline>headline 8 text eksempel</headline>
  <subheadline>subheadline 8 text eksempel</subheadline>
  <smalltext>smalltext 8 text eksempel</smalltext>
  <content>content 8 text eksempel</content>
  <file type="gif">pic8.gif</file>
  </news>

  <news id="7">
  <dato>07/12/02</dato>
  <headline>headline 7 text eksempel</headline>
  <subheadline>subheadline 7 text eksempel</subheadline>
  <smalltext>smalltext 7 text eksempel</smalltext>
  <content>content 7 text eksempel</content>
  <file type="gif">pic7.gif</file>
  </news>

  <news id="6">
  <dato>06/12/02</dato>
  <headline>headline 6 text eksempel</headline>
  <subheadline>subheadline 6 text eksempel</subheadline>
  <smalltext>smalltext 6 text eksempel</smalltext>
  <content>content 6 text eksempel</content>
  <file type="gif">pic6.gif</file>
  </news>

  <news id="5">
  <dato>05/12/02</dato>
  <headline>headline 5 text eksempel</headline>
  <subheadline>subheadline 5 text eksempel</subheadline>
  <smalltext>smalltext 5 text eksempel</smalltext>
  <content>content 5 text eksempel</content>
  <file type="gif">pic5.gif</file>
  </news>

  <news id="4">
  <dato>04/12/02</dato>
  <headline>headline 4 text eksempel</headline>
  <subheadline>subheadline 4 text eksempel</subheadline>
  <smalltext>smalltext 4 text eksempel</smalltext>
  <content>content 4 text eksempel</content>
  <file type="gif">pic4.gif</file>
  </news>

  <news id="3">
  <dato>03/12/02</dato>
  <headline>headline 3 text eksempel</headline>
  <subheadline>subheadline 3 text eksempel</subheadline>
  <smalltext>smalltext 3 text eksempel</smalltext>
  <content>content 3 text eksempel</content>
  <file type="gif">pic3.gif</file>
  </news>

  <news id="2">
  <dato>02/12/02</dato>
  <headline>headline 2 text eksempel</headline>
  <subheadline>subheadline 2 text eksempel</subheadline>
  <smalltext>smalltext 2 text eksempel</smalltext>
  <content>content 2 text eksempel</content>
  <file type="gif">pic2.gif</file>
  </news>

  <news id="1">
  <dato>01/12/02</dato>
  <headline>headline 1 text eksempel</headline>
  <subheadline>subheadline 1 text eksempel</subheadline>
  <smalltext>smalltext 1 text eksempel</smalltext>
  <content>content 1 text eksempel</content>
  <file type="gif">pic1.gif</file>
  </news>
</allnews>

Hvordan skal billedet ligges ind ?

Kan du hjælpe mig det sidste stykke vej ?


Jeg fandt lige noget det ligner det jeg vil opnå !
se her http://www.maximumasp.com/Default.aspx?bhcp=1

/lars
Avatar billede tobias_cool Nybegynder
31. december 2002 - 10:38 #7
Jep det er sådan. så skal du tilføje <body onload="TalValg()">

Men mit script henter dataene og så kan du selv finde de der divs at putte dem i
nodes[Tal1].childNodes[1].text
1 = datoen
2 = headline
3 = subheadline
4 = smalltext
5 = content
6 = filetype

så kan du så selv lave en tabel

<table>
<tr>
<td><div id="news1dato"></div></td>
</tr>
</table>

og skrive
document.getElementById("news1dato").innerHTML = nodes[Tal1].childNodes[1]

ok
Avatar billede larsbaun Nybegynder
01. januar 2003 - 11:59 #8
Jeg lader lige accepten vente et spørgsmål tid ! Til jeg har set at der er hul igennem til xml dokumentet.

Her er min spørgsmål som jeg håber på at du vil hjælpe mig med !

skal jeg have et "document.getElementById" for hver nyhed eller nyhedspunkt ?

ref. TalValg til hvilken nyhed det drejer sig om 1,2,3 ?

hvad ref. "news1dato" til og skal jeg så også have en "news1headline" osv.?
____________________________________________________________

her er min kode :

<html>
<head>
<script>
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("Data.xml");
nodes=xmlDoc.documentElement.childNodes;
nodesl=nodes.length;
var Tal1
var Tal2
var Tal3
var starnr = nodesl - 6;
function TalValg(){
Tal1 = Math.floor(Math.Random()*starnr) + 1
Tal2 = Math.floor(Math.Random()*starnr) + 1
Tal3 = Math.floor(Math.Random()*starnr) + 1
if(Tal1 == Tal2){
Tal2 = Tal2 -1;
}
else if(Tal2 == Tal3){
Tal3 == Tal3 -2;
}

document.getElementById("news1dato").innnerHTML=Nodes[Tal1].childNodes[1].text + '<br>' + Nodes[Tal1].childNodes[2].text + '<br>' + Nodes[Tal1].childNodes[3].text + '<br>' + Nodes[Tal1].childNodes[4].text + '<br>' + Nodes[Tal1].childNodes[5].text + '<br>' + Nodes[Tal1].childNodes[6].text

}
</script>

</head>

<body onload="TalValg()">


<table>
<tr>
  <td>
<h1>xml news 1 </h1>
<table border="1" bgcolor="blue">
<tr align="left"><th>dato:</th>    <td><div id="news1dato"></div></td></tr>
<tr align="left"><th>headline:</th><td id="headline"></td></tr>
<tr align="left"><th>subheadline:</th><td id="subheadline"></td></tr>
<tr align="left"><th>smalltext:</th><td id="smalltext"></td></tr>
<tr align="left"><th>content:</th><td id="content"></td></tr>
<tr align="left"><th>pic</th><td id="pic"></td></tr>
</table>
  </td>
  <td>
<!-- og hvad gør man når man skal hente nyhed nr. 2-->

<h1>xml news 2 </h1>
<table border="1" bgcolor="green">
<tr align="left"><th>dato:</th>    <td><div id="news1dato"></div></td></tr>
<tr align="left"><th>headline:</th><td id="headline"></td></tr>
<tr align="left"><th>subheadline:</th><td id="subheadline"></td></tr>
<tr align="left"><th>smalltext:</th><td id="smalltext"></td></tr>
<tr align="left"><th>content:</th><td id="content"></td></tr>
<tr align="left"><th>pic</th><td id="pic"></td></tr>
</table>
  </td>
  <td>
<h1>xml news 3 </h1>
<table border="1" bgcolor="yellow">
<tr align="left"><th>dato:</th>    <td><div id="news1dato"></div></td></tr>
<tr align="left"><th>headline:</th><td id="headline"></td></tr>
<tr align="left"><th>subheadline:</th><td id="subheadline"></td></tr>
<tr align="left"><th>smalltext:</th><td id="smalltext"></td></tr>
<tr align="left"><th>content:</th><td id="content"></td></tr>
<tr align="left"><th>pic</th><td id="pic"></td></tr>
</table>
  </td>
</tr>
</table>

</body>
</html>

/Hjælp - Lars !
Avatar billede tobias_cool Nybegynder
01. januar 2003 - 12:28 #9
Her er min spørgsmål som jeg håber på at du vil hjælpe mig med !

skal jeg have et "document.getElementById" for hver nyhed eller nyhedspunkt ?
document.getElementById finder et objekt med et bestemt id f.eks. <div id="news1dato"></div> document.getElementById("news1dato") markeringen var sådan set news1=nyhed1 dato datoen sådan at nyhed tos dato var news2dato osv.

ref. TalValg til hvilken nyhed det drejer sig om 1,2,3 ?
jep Tal1 bærer den første nyhed Tal2 den anden Tal3 den tredje. Jeg forudsætter at du skriver de nyeste nyheder i toppen for så passer det med at når der kommer en ny springer den de første 6 over

hvad ref. "news1dato" til og skal jeg så også have en "news1headline" osv.?
news1dato henviser til den <div id="news1dato">, hvis du bruger document.getElementById("detidhvornyhedenskalvære").innerHTML så kan du lave HTML i divet dvs. f.eks. skrive
document.getElementById("news1").innerHTML = '<tr><td>+ nodes[Tal1].childNodes[1] +</td></tr>' osv. altså skrive hele nyheden ind i et <div>-tag
Avatar billede tobias_cool Nybegynder
01. januar 2003 - 12:29 #10
foresten hvis der skulle blive noget senere kan du henvende dig på tobias@home1.gvdnet.dk
Avatar billede tobias_cool Nybegynder
02. januar 2003 - 20:48 #11
jeg har sendt en mail med et eksempel der virker
Avatar billede larsbaun Nybegynder
02. januar 2003 - 23:11 #12
Tak for hjælpen Tobias !

Og for dem godt vil have resultatet , så er det her :

<html>
<head>
<script>   
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("Data.xml");
nodes=xmlDoc.documentElement.childNodes;
nodesl=nodes.length;
startnr = nodesl - 6;
var Tal1
var Tal2
var Tal3

function talvalg(){
Tal1 = Math.floor( Math.random() * startnr)+1;
Tal2 = Math.floor( Math.random() * startnr)+1;
Tal3 = Math.floor( Math.random() * startnr)+1;
if(Tal1 == Tal2){
Tal2 = Tal2 -1;
}
else if(Tal2 == Tal3){
Tal3 = Tal3 -2;
}


indskrivnews();
}
function indskrivnews(){
new1 = document.getElementById("news1");
new2 = document.getElementById("news2");
new3 = document.getElementById("news3");
new1.innerHTML += '<img src="' + nodes[Tal1].childNodes[5].text + '">'+
          '<br><br>Dato:' + nodes[Tal1].childNodes[0].text +
          '<br><br>' + nodes[Tal1].childNodes[1].text +
          '<br>' + nodes[Tal1].childNodes[2].text +
          '<br>' + nodes[Tal1].childNodes[3].text +
          '<br>'+ nodes[Tal1].childNodes[4].text;
         
new2.innerHTML += '<img src="' + nodes[Tal2].childNodes[5].text + '">'+
          '<br><br>Dato:' + nodes[Tal2].childNodes[0].text +
          '<br><br>' + nodes[Tal2].childNodes[1].text +
          '<br>' + nodes[Tal2].childNodes[2].text +
          '<br>' + nodes[Tal2].childNodes[3].text +
          '<br>'+ nodes[Tal2].childNodes[4].text;

new3.innerHTML += '<img src="' + nodes[Tal3].childNodes[5].text + '">'+
          '<br><br>Dato:' + nodes[Tal3].childNodes[0].text +
          '<br><br>' + nodes[Tal3].childNodes[1].text +
          '<br>' + nodes[Tal3].childNodes[2].text +
          '<br>' + nodes[Tal3].childNodes[3].text +
          '<br>'+ nodes[Tal3].childNodes[4].text;
}
</script>

</head>

<body onload="talvalg()">

<TABLE>
<TR>
<TD><div id="news1"></div></TD>
<TD><div id="news2"></div></TD>
<TD><div id="news3"></div></TD>
</TR>
</TABLE>

</body>
</html>
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
Kategori
Kurser inden for grundlæggende programmering

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