10. februar 2003 - 09:51
Der er
18 kommentarer og 2 løsninger
Javascript fejl...
Hej med jer... Når jeg prøver at køre et script jeg har lavet får jeg fejlen: "Et objekt er obligatorisk." Hvad skyldes dette? JS scriptet ser således ud: function makeTable() { var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("menu.xml") var root = xmlDoc.getElementsByTagName('menupunkt') for (i=0; i <= root.length; i++) { document.write("<tr><td class=\"Menu\" vAlign=\"top\" noWrap width=\"100%\">" + root[i].childNodes[2].firstChild.nodeValue + "</td></tr>") } } min XML fil ser således ud: <?xml version="1.0" encoding="ISO-8859-1"?> <menu-configuration> <menupunkt> <menuId>1</menuId> <navn>Hjem</navn> <link>../hovedside/hovedside.htm</link> <frame>2</frame> </menupunkt> <menupunkt> <menuId>2</menuId> <navn>Referater</navn> <link>../referat/referat.htm</link> <frame>1</frame> </menupunkt> </menu-configuration> Kaldet fra html siden ser således ud: <!DOCTYPE html PUBLIC "-//W3C//Dtd html 4.0 transitional//EN"> <html> <head> <title>menu</title> <script language="javascript" src="Menu.js"></script> </head> <body> <table cellSpacing=0 cellPadding=0 width="100%" border=0> <tr> <td class="Menu" vAlign="top" width="100%"> <script type="text/javascript">document.write(makeTable());</script> </td> </tr> </table> </body> </html>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
10. februar 2003 - 09:58
#1
for (i=0; i <(root.length);i++) {
10. februar 2003 - 10:02
#2
Eller: for (var i=0; i <(root.length);i++) {
10. februar 2003 - 10:04
#3
Det fjernede fejlen delvist... Nu bliver der udskrevet en forkomst først hvori der står UNDEFINED ../referat/menu.htm ../holdning/holdning.htm
10. februar 2003 - 10:08
#4
Jeg får <tr><td class="Menu" vAlign="top" noWrap width="100%">../hovedside/hovedside.htm</td></tr><tr><td class="Menu" vAlign="top" noWrap width="100%">../referat/referat.htm</td></tr>
10. februar 2003 - 10:08
#5
(kildekode)
10. februar 2003 - 10:10
#6
sludder :)
10. februar 2003 - 10:31
#7
<!DOCTYPE html PUBLIC "-//W3C//Dtd html 4.0 transitional//EN"> <html> <head> <title>Hovedmenu</title> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta http-equiv=Content-style-Type content=text/css> <link href="defsMenu.css" type=text/css rel=stylesheet> <script language="javascript" src="Menu.js"></script> </head> <body> <table cellSpacing=0 cellPadding=0 width="100%" border=0> <tr> <td class="Menu" vAlign="top" width="100%"> <script type="text/javascript">document.write(makeTable());</script> </td> </tr> </table> </body> </html> Dette er hvad der står i kildekoden når jeg tager denne...
10. februar 2003 - 11:09
#8
Hvor er makeTable-funktionen?
10. februar 2003 - 11:12
#9
Ligger i Menu.js som er vist øverst i spørgsmålet.
10. februar 2003 - 11:14
#10
i for løkken har jeg prøvet at skrive følgende: for (i=0; i <= root.length; i++) { document.write(i); document.write("<tr><td class=\"Menu\" vAlign=\"top\" noWrap width=\"100%\">" + root[i].childNodes[2].firstChild.nodeValue + "</td></tr>") } Dette gav følgende resultat hvis der er nogle der er interesserede!? 1 2 undefined ../referat/menu.htm ../hovedside/hovedside.htm
10. februar 2003 - 11:34
#11
Ved at bruge childNodes bliver din kode stort set ulæselig, og samtidig bliver du afhænging af rækker følgen af dine elementer. Anvend i stedet selectNodes og selectSingleNode, det vil gøre din kode mere vedligeholdelses venlig. Prøv at kigge på msdn.microsoft.com/xml. /atoft
10. februar 2003 - 13:17
#12
Jeg har nu lavet den om til selectNodes...men får samme resultat: Output: 1 Hjem hovedside/hovedside.htm 2 2 Referater referat/menu.htm 1 3 Hjem hovedside/hovedside.htm 2 undefined Ny funktion: function makeTable() { var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.load("test.xml"); var objNodeList = xmlDoc.selectNodes("//menupunkt"); for (var i=0;i<(objNodeList.length);i++) { document.write("<tr><td>" + objNodeList.item(i).text + "</td></tr>"); } }
10. februar 2003 - 13:20
#13
Hvor mange menupunkter har du i din xml?
10. februar 2003 - 13:24
#14
du kan også med fordel ændre: document.write("<tr><td>" + objNodeList.item(i).text + "</td></tr>"); til document.write("<tr><td>" + objNodeList.item(i).selectSingleNode("navn").text + "</td></tr>");
10. februar 2003 - 14:00
#15
Har hermed ændret det til: document.write("<tr><td>" + objNodeList.item(i).selectSingleNode("link").text + "</td></tr>"); og dette hjalp ikke noget på mit problem andet end koden er blevet lidt pænere... Indtil videre har jeg kun 3 punkter i min XML fil: <menu-configuration> <menupunkt> <menuId>1</menuId> <navn>Hjem</navn> <link>../hovedside/hovedside.htm</link> <frame>2</frame> </menupunkt> <menupunkt> <menuId>2</menuId> <navn>Referater</navn> <link>../referat/menu.htm</link> <frame>1</frame> </menupunkt> <menupunkt> <menuId>3</menuId> <navn>Hjem</navn> <link>../hovedside/hovedside.htm</link> <frame>2</frame> </menupunkt> </menu-configuration>
10. februar 2003 - 14:03
#16
Der ser ud som om din i tæller kører en tur for meget. Den skal jo kun køre 3 gange. du har ændret var ændret til "<" mindre end istedet for "<=" ikke?
10. februar 2003 - 14:07
#17
Jeg tror også det har noget med det at gøre... når jeg ændrer fra: for (var i=0;i<(objNodeList.length);i++) { til for (var i=0;i<=(objNodeList.length);i++) { kommer det rigtigt ud, men så kommer der en scriptfejl og siger: "'item(...)' er null, eller ikke et objekt."
10. februar 2003 - 14:11
#18
det skal være for (var i=0;i<(objNodeList.length);i++) ellers kører den engang for meget. Virker det ikke?
10. februar 2003 - 14:22
#19
Nu har jeg den. Skal skal jo ikke lave en document.write, hvor du kalder funktionen. <tr> <td class="Menu" vAlign="top" width="100%"> <script type="text/javascript">document.write(makeTable());</script> </td> </tr> det skal selvfølgelig bare være: <tr> <td class="Menu" vAlign="top" width="100%"> <script type="text/javascript">makeTable();</script> </td> </tr>
10. februar 2003 - 14:25
#20
Skidehamrende godt det virker sgu' Mange tak for hjælpen...
Vi tilbyder markedets bedste kurser inden for webudvikling