Avatar billede justdoit Nybegynder
27. oktober 2002 - 19:03 Der er 4 kommentarer og
1 løsning

Hjælp af god udvikler søges!

Jeg har et script som henter data fra min db og ind i et array! Dette bliver hentet ind i en selectbox!

Fra denne selectbox kan du vælge en overskrift - når du vælger en overskrift, bliver data hentet ind i et nyt array, og alle underoverskrifterne bliver hentet ind i en ny selectbox!

Dette virker fint, men jeg får denne fejl??

U_kategoriId.value er null eller ikke et objekt

Dette er ikke hele problemet! Når jeg vælger en underkategori i min selectbox, så vil jeg gerne have at hvis id'et til underkategorien er fx 5 få skal en anden siden hentes.

Hvordan gør jeg det???

Her kommer koderne til u_kategoriens selectbox:

<select name="u_katagori" class="annonceform"
          onfocus="if (0>idxLand) this.blur();"
          onchange="if (this.selectedIndex>0) setMenu(this.form, this.name);">
                                  <option value="1">- - - - - - - - - - - -</option>
          <option value="2"></option></select>


Her kommer koderne:

<script language="JavaScript"> <!--

var selbokse = new Array();

selbokse['kategori'] =
new Array( "    Vælg kategori "

<%
strSQL = "SELECT * FROM kategori"
set rs = conn.execute (strSQL)
do while not rs.eof
  Response.Write ", """ & rs("kategoriNavn") & """"
  rs.movenext
loop
%>
);

selbokse['u_katagori'] =
new Array(
<%
'Udfør samme SQL som lige før
set rs = conn.execute (strSQL)
do while not rs.eof
%>
new Array ( "Vælg underkategori"
<%
  strSQL = "SELECT * FROM u_katagori WHERE u_kategoriID = " & rs("kategoriID")
  set rsMad = conn.execute(strSQL)
  do while not rsMad.eof
    Response.Write ", """ & rsMad("ID") & "|" & rsMad("u_kategoriNavn") & """"
    rsMad.movenext
  loop
  rs.Movenext
%>)<%
  if NOT rs.EOF then response.write ","
loop
rsMad.Close
rs.Close
Conn.Close
Set rsMad = Nothing
Set rs = Nothing
Set Conn = Nothing
%>
);

//Dette står i select hvis den er tom
var offMenu = new Array( "Vælg underkategori" ); // >

var sel;
var selo;

function setOption( idx, data ) {
  var tmp = data.split("|");
  if ( tmp.length == 1 ) { tmp[1]=tmp[0]; tmp[0]="" };
  if ( selo.length > idx ) {
      selo[idx].text = tmp[1];
      selo[idx].value = tmp[0];
  } else
      selo[idx] = new Option( tmp[1], tmp[0] );
}; //end setOption( number, string, string )

function setupMenu( selobj, menuarray ) {
//alert("menuarray type: " +typeof(menuarray) );
    sel  = selobj.selectedIndex;
    selo = selobj.options;
    for (var i=0; menuarray.length>i; i++ ) setOption( i, menuarray[i] );
    selobj.selectedIndex = 0;
    selobj.disabled = ( menuarray==offMenu )?true:false;
    selo.length = menuarray.length;
}; //end setupMenu( select object, array )

var idxLand = -1;  // intet land valgt

function setMenu ( frm, selNavn ) {
  if ( selNavn == "" ) {
      setupMenu( frm.kategori, selbokse['kategori'] );
      setupMenu( frm.u_katagori, offMenu );
      idxLand = -1;
  } else
  if ( selNavn == 'kategori' ) {
      idxLand = frm.kategori.selectedIndex-1;
      if ( idxLand >= 0 )
          setupMenu( frm.u_katagori, selbokse['u_katagori'][idxLand] );
      else
          setupMenu( frm.u_katagori, offMenu );
  } else
  if ( selNavn == 'u_katagori' && idxLand>=0 ) {
    if (frm.u_kategoriId.value==25) {
      document.replace ( "andenfil.asp?ID=25" );
    }   
  } else
      alert( "Slem programfejl. du bør aldrig se denne besked." );

}; //end setMenu ( radioKnap element )

-->  </script>
Avatar billede soelvpil Nybegynder
27. oktober 2002 - 19:20 #1
Er det ikke fordi du i din selectMenu-funktion referer til den som frm.u_kategoriId.value der hvor du checker om værdien er 25.

Det skal vel bare rettes til frm.u_kategori.value, tror jeg
Avatar billede soelvpil Nybegynder
27. oktober 2002 - 19:26 #2
Hov den hedder da u_katagori!

Det med at loade siden kan jeg ikke lige gennemskue, men det må være noget med at sætte document.location.href til den rigtige nye side, som sikkert afhænger af, hvad for en uderkategori der er valgt.
Avatar billede justdoit Nybegynder
27. oktober 2002 - 19:47 #3
Nu har jeg rettet til:

if (frm.u_kategoriId.value) {

Men jeg får samme fejl! Fejlen er i linie 93 som er:

((linie 93 )) if ( selNavn == 'kategori' ) {
      idxLand = frm.kategori.selectedIndex-1;
      if ( idxLand >= 0 )
          setupMenu( frm.u_katagori, selbokse['u_katagori'][idxLand] );
      else
          setupMenu( frm.u_katagori, offMenu );
  } else
  if ( selNavn == 'u_katagori' && idxLand>=0 ) {
    if (frm.u_kategoriId.value) {
      document.replace ( "andenfil.asp?ID=25" );
Avatar billede soelvpil Nybegynder
27. oktober 2002 - 21:28 #4
øhhh, det jeg mente var at det skulle være

    if (frm.u_katagori.value==25) {
      document.replace ( "andenfil.asp?ID=25" );
    }   

med mindre da jeg har misforstået noget...
Avatar billede justdoit Nybegynder
28. oktober 2002 - 21:41 #5
Jeg tror du har misforstået det, for det er kun tabellen der hedder u_katagori, og jeg kan jo ikke vælge hele tabellen!!

Jeg tror jeg prøver noget ASP i stadet for JS
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