function sektion(sektionnr, sektion) { this.sektionnr= sektionnr; this.sektion= sektion; }
function emne(emnenr, emne) { this.emnenr= emnenr; this.emne= emne; }
</script>
<!--#include file ="../database/databaseConn.asp"--> <% strSQL = "select * from ARTIKLER" set rs = Conn.execute(strSql) i = 1 response.write "<script>" while not rs.EOF or rs.BOF response.write "gruppe[1][" & i & "]=new artikel(""" & rs("titel") & """,""" & rs("forfatter") & """, """ & rs("beskrivelse") & """, """ & rs("filnavn") & """, """ & rs("filnavn") & """, """ & rs("emne") & """);" i = i + 1 rs.MoveNext wend
strSQL = "select * from SEKTIONER" set rs = Conn.execute(strSql) i = 1 while not rs.EOF or rs.BOF response.write "gruppe[2][" & i & "]=new sektion(""" & rs("sektionnr") & """,""" & rs("sektion") & """);" i = i + 1 rs.MoveNext wend
strSQL = "select * from EMNER" set rs = Conn.execute(strSql) i = 1 while not rs.EOF or rs.BOF response.write "gruppe[3][" & i & "]=new emne(""" & rs("emnenr") & """,""" & rs("emne") & """);" i = i + 1 rs.MoveNext wend
%> </script> <script>
function opdater() { var gNum = document.OpdaterArtikel.gruppe.options.selectedIndex+1; var forfatter = gruppe[1][gNum].forfatter; document.OpdaterArtikel.forfatter.value = forfatter;
var beskrivelse = gruppe[1][gNum].beskrivelse; document.OpdaterArtikel.beskrivelse.value = beskrivelse;
var filnavn = gruppe[1][gNum].filnavn; document.OpdaterArtikel.filnavn.value = filnavn;
var sektion = gruppe[1][gNum].sektion; document.OpdaterArtikel.sektion.options.selectedIndex = gNum; }
for (var i = 1;i < gruppe[3].length; i++) { document.IndsaetArtikel.emne.options[i].text = gruppe[3][1].emne; document.IndsaetArtikel.emne.options[i].value = gruppe[3][1].emnenr; document.OpdaterArtikel.mig.length = i; }
UPS - der skulle ikke have stået "gruppe[3][1].emne;". Der skulle i stedet have stået "gruppe[3][i].emne;" ved alle 3 linier i kodeudsnittet (samt i slutningen af hele koden), men fejlen kommer stadig.
mon ikke det kommer af at du kører den scriptkode idet head indlæses, før din form er blevet oprettet i dokumentets objekt model. Det bør snarere gøres som en initieringsfunktion på onload.
i din for løkke skal du oprette nogen options at lægge de der værdier i.
for (var i = 1;i < gruppe[3].length; i++) { document.IndssetArtikel.emne.options[i] = new Option( gruppe[3][1].emne, gruppe[3][1].emnenr ); document.OpdaterArtikel.mig.length = i; }
Jeg forstår ikke den der document.OpdaterArtikel.mig.length du opdaterer?
Med "onLoad" virker det ikke, men hvis jeg tager en anden f.eks. "onMouseover" så virker det. Hvorfor virker "onLoad" ikke? (Hvad kan jeg evt. bruge i stedet?)
>...i din for løkke skal du oprette nogen options at lægge de der værdier i. Jeg er ikke klar over, om jeg har gjordt dette, men sig til, hvis det er vigtigt.
nu hvor du har retttet er det klart at det er længden på option listen du ønsker at opdatere med linien: document.IndsaetArtikel.emne.length = i; og det er HELT galt.
1) fordi længden automatisk opdateres når du tilføjer en ny option foenden. du behøver ikke opdatere length. 2) det første element har nummer 0. efter indsættelsen af første element siger du så ...length = 0; det vil afkorte options-arrayet så det kommer til at indeholde 0 elementer, og det var jo ikke lige meningen. Ditto med de andre du indsætter. den linie sletter dem igen umiddelbart efter de er indsat.
du kan evt skrive linien EFTER forløkken, så vil den klippe overskydende elementer af hvis den select du bygger om i startede med at have flere elementer end den skal have nu.
Den nye kode indlæser fint alle elementerne fra array'en og indsætter dem også korrekt i dropdown-menu - men kun hvis jeg anvender "onMouseover" (eller lignende). Den foreslåede "onLoad" virker ikke - intet bliver indlæst i menuen.
Det er en måde, hvorpå man kan bruge VBScript og JavaScript sammen. Det som skrives inde i response.write "....", køres samtidigt med at man er i et VB-forløb... men det ved jakoba 100 gange mere om end jeg gør.
Jeg undrer mig over, at det første menu-punkt er tomt, da databasen, arrayen eller menuen i forvejen ikke indeholder et tomt element. Kan du/I ser hvorfor?
function IndlaesMenu() {
for (var i = 1;i < gruppe[3].length; i++) { document.IndsaetArtikel.emne.options[i] = new Option( gruppe[3][i].emne, gruppe[3][i].emnenr ); } }
... men den er ikke online og bliver det heller ikke det første lange stykke tid - ud over det er den (når den er færdigudviklet) en admin-side, hvortil kun få personer skal have tilgang.
Men kopier mit allerøverste kode ind i en asp-side, hvor du kobler nogle relevante "tryk-sager" på - håber at det hjælper.
Synes godt om
Ny brugerNybegynder
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.