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>
