Avatar billede netbegynder Nybegynder
20. maj 2002 - 20:52 Der er 9 kommentarer og
1 løsning

Dropdown problemer

Hej

Jeg har en menu (ved navn sektion), som når man trykker i den, gerne skulle afspejle de emner, som findes i den på en anden menu (med navn emne). Problemet er bare, at den vise samtlige emner, og ikke kun de emner, som er tilknyttet den valgte sektion - hvorfor?

function update() {
  kont = document.Artikel.sektion.selectedIndex;
  valg = document.Artikel.sektion.options[kont].value;

  for (var i = 1;i < gruppe[3].length; i++)  {
        if ( kont = gruppe[3][i].sektionnr ) {
          document.Artikel.emner.options[i-1] = new Option( gruppe[3][i].titel, gruppe[3][i].emnenr);
        }   
  }
}

Andet relevant kode (beskåret):
var gruppe = new Array();
gruppe[1] = new Array();
gruppe[2] = new Array();
gruppe[3] = new Array();

function artikel(titel, forfatter, beskrivelse, filnavn, sektionnr, emnenr) {
  this.titel= titel;
  this.forfatter= forfatter;
  this.beskrivelse= beskrivelse;
  this.filnavn= filnavn;
  this.sektionnr= emnenr;
}

function sektion(sektionnr, titel) {

  this.sektionnr= sektionnr;
  this.titel= titel;

}

function emne(emnenr, titel, sektionnr, farve, placering, niveau) {
  this.emnenr= emnenr;
  this.titel= titel;
  this.sektionnr= sektionnr;
  this.farve= farve;
  this.placering= placering;
  this.niveau= niveau;
}

</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("sektionnr") & """);"
  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("titel") & """);"
  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("titel") & """, """ & rs("sektionnr") & """, """ & rs("farve") & """,""" & rs("placering") & """,""" & rs("niveau") & """);"
  i = i + 1
  rs.MoveNext
wend
%>
 
function Start() {


    for (var i = 1;i < gruppe[2].length; i++) {
          document.Artikel.sektion.options[i-1] = new Option( gruppe[2][i].titel, gruppe[2][i].sektionnr );
    }

function update() {
  kont = document.Artikel.sektion.selectedIndex;
  valg = document.Artikel.sektion.options[kont].value;

  for (var i = 1;i < gruppe[3].length; i++)  {
        if ( kont = gruppe[3][i].sektionnr ) {
          document.Artikel.emner.options[i-1] = new Option( gruppe[3][i].titel, gruppe[3][i].emnenr);
        }   
  }
}

</script>

</head>

<body onLoad="Start();">

  <p align="left">&nbsp;
  <SELECT name="sektion" onChange="update();">
        </SELECT>

        <SELECT name="emner">
        </SELECT></p>

  <p align="left">
 
<%

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

    if Request.form("ArtikelValg") = "IndsaetArtikel" then

        strSQL = "select * from ARTIKLER WHERE TITEL = '" & Request.form("titel") & "'"
        set rs = Conn.execute(strSQL)
        if rs.EOF then
              Session.LCID = 1030
              strSQL = "INSERT INTO ARTIKLER (titel, forfatter, beskrivelse, filnavn, sektionnr, emnenr, dato) VALUES ('" & Request.form("titel") & "','" & Request.form("forfatter") & "','" & Request.form("beskrivelse") & "','" & Request.form("filnavn") & "','" & Request.form("sektion") & "','" & Request.form("emne") & "','" & Now() & "')"
            set rs = Conn.execute(strSQL)
            status = "Artiklen er nu indsat!"
        else
              status = "Artiklen er IKKE indsat, da en med samme titel allerede eksisterer!"
        end if
    end if
   
    if Request.form("ArtikelValg") = "OpdaterArtikel" then

        strSQL = "select * from ARTIKLER WHERE TITEL = '" & Request.form("titel") & "'"
        set rs = Conn.execute(strSQL)
        if rs.EOF then
              strSQL = "UPDATE ARTIKLER set '" & Request.form("titel") & "','" & Request.form("forfatter") & "','" & Request.form("beskrivelse") & "','" & Request.form("filnavn") & "','" & Request.form("sektion") & "','" & Request.form("emne") & "','" & Now() & "' WHERE titel = '" & titel & "'"           
            set rs = Conn.execute(strSQL)
            status = "Artiklen er nu opdateret!"
        else
              status = "Artiklen er IKKE opdateret, da den ikke eksisterede i forvejen!"
        end if
    end if
   
    if Request.form("ArtikelValg") = "SletArtikel" then

        strSQL = "select * from ARTIKLER WHERE TITEL = '" & Request.form("titel") & "'"
        set rs = Conn.execute(strSQL)
        if rs.EOF then
            strSQL = "DELETE FROM NYHEDSBREV WHERE TITLE = '" & titel & "'"
            set rs = Conn.execute(strSQL)
            status = "Artiklen er nu slettet!"
        else
              status = "Artiklen er IKKE slettet, da den ikke eksisterede i forvejen!"
        end if
    end if
   
    Conn.close
    response.redirect ("index.asp?status=" & status)
   
    if not Request.form("IndsaetSektion") = "lakjhsdfkjasdf" then

        strSQL = "select * from SEKTIONER WHERE SEKTION = '" & Request.form("sektion") & "'"
        set rs = Conn.execute(strSQL)
        if rs.EOF then
              strSQL = "INSERT INTO SEKTIONER (sektion) VALUES ('" & Request.form("sektion") & "')"
            set rs = Conn.execute(strSQL)
            status = "Sektionen er nu indsat!"
        else
              status = "Sektionen er IKKE indsat, da en med samme titel allerede eksisterer!"
        end if
    end if

Conn.close
end if
%>


</body>

</html>
Avatar billede netbegynder Nybegynder
20. maj 2002 - 20:55 #1
Hov, i for-løkken, kom jeg vist til at skrive:
document.Artikel.emner

Det skulle have været:
document.Artikel.emne
Avatar billede mikoalngelo Nybegynder
20. maj 2002 - 20:56 #2
Prøv at ændre linie 2 til:
kont = document.Artikel.sektion[selectedIndex];
Aner ikke om det virker...
Avatar billede netbegynder Nybegynder
20. maj 2002 - 21:00 #3
mikoalngelo>>

Nej, det er ikke her problemet ligger - det virker nemlig fint.
Avatar billede mikoalngelo Nybegynder
20. maj 2002 - 21:06 #4
Okay, men jeg er heller ikke nogen ørn til det med arrays i flere dimensioner, men jeg håber du får problemet løst, men hjis du får brug for hjælp til JavaScript senere så er min ICQ-adresse:
158889628
Avatar billede netbegynder Nybegynder
20. maj 2002 - 21:17 #5
Ok, tak for tilbudet.

Men problemet handler ikke så meget om arrays i flere dimensioner, men mere om at jeg ikke kan finde ud af kode en funktion, som kan gøre følgende:

1) Tag værdien (sektionnr) fra det valgte menupunkt i den første menu (sektion-menuen).
2) Sammenlign denne værdi med værdien for hvert emne og indsæt KUN de emner i emne-menuen, som er tilknyttet den valgte sektion (= har det samme sektionnr).

Nedenstående smider bare alle emner ind i menuen - den er totalt ligeglad med, at jeg "beder" dem om kun tage dem, som er tilknyttet en bestemt sektion. Why?

function update() {
  kont = document.Artikel.sektion.selectedIndex;
  valg = document.Artikel.sektion.options[kont].value;

  for (var i = 1;i < gruppe[3].length; i++)  {
        if ( kont = gruppe[3][i].sektionnr ) {
          document.Artikel.emne.options[i-1] = new Option( gruppe[3][i].titel, gruppe[3][i].emnenr);
        }   
  }
}
Avatar billede mikoalngelo Nybegynder
20. maj 2002 - 21:27 #6
Hvilket ICQ nummer har du, da der er nogle spørgsmål til dig, der ikker er til at skrive på den "halv-interaktive" kommunikations-metode, hvis du forstår hvad jeg mener ;)
Avatar billede mikoalngelo Nybegynder
20. maj 2002 - 21:30 #7
For resten fatter jeg ikke hvad det der <% -tag gør...
Avatar billede netbegynder Nybegynder
20. maj 2002 - 21:34 #8
>> <% -tag gør...
Det er fordi jeg bruger VBscript.
Avatar billede mikoalngelo Nybegynder
20. maj 2002 - 21:35 #9
Okay, jeg tænkte det nok...
Avatar billede netbegynder Nybegynder
20. maj 2002 - 22:26 #10
Jeg lukker dette spørgsmål og prøver et andet sted.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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