Her er en fra Jakoba :
<html>
<head><title>Select menu vælger sekundær select menu.</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">
<script language="JavaScript"> <!--
var selbokse = new Array();
selbokse['land'] =
new Array ( "- vælg Amt -", "København", "Aarhus", "Odense" ), // Danmark
// forhvert madsted skal databasen generere en url og et navn
selbokse['madsted'] =
new Array(
new Array ( // selbokse['madsted'][0][0] for Danmark,København.
"- vælg Restaurant -",
"
www.restaurant-cassiopeia.dk/|Cassiopeia",
"
www.dentatoveredeenke.dk/|Den Tatoverede Enke",
"
www.egoisten.dk/|Egoisten",
"
www.restaurant-kanalen.dk/|Kanalen",
"
www.krogs.dk/|Krogs Fiskerestaurant"
),
new Array ( // selbokse['madsted'][0][1] for Danmark,Aarhus.
"-1|- vælg Restaurant -",
"
www.rold.dk/|Rold Storkro",
"
www.spiseguiden.dk/luneborg/|Luneborg Kro",
"home10.inet.tele.dk/ihj/|Hotel Plesner Skagen",
"
www.spiseguiden.dk/glvraaslot/|Gl. Vraa Slot",
"
www.pandrupkro.dk/index.htm|Pandrup Kro"
),
new Array ( // selbokse['madsted'][0][2] for Danmark,Odense.
"-1|- vælg Restaurant -",
"
www.le-provence.dk/Le Provence",
"
www.skaerven.dk/|skaerven",
"
www.majorgaarden.com/|Majorgården" )
);
var offMenu = new Array( " \< - \< - \< - \< - \< -" ); // >
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.land, selbokse['land'] );
setupMenu( frm.madsted, offMenu );
idxLand = -1;
} else
if ( selNavn == 'land' ) {
idxLand = frm.land.selectedIndex-1;
if ( idxLand >= 0 )
setupMenu( frm.madsted, selbokse['madsted'][idxLand] );
else
setupMenu( frm.madsted, offMenu );
} else
alert( "Slem programfejl. du bør aldrig se denne besked." );
}; //end setMenu ( radioKnap element )
// --> </script>
</head>
<body onload="setMenu( document.sfrm, '' )">
<p><form name="sfrm" action="dest_fil.asp" onsubmit="return pakResultat(this);">
<center><table border=0 cellspacing=10>
<tr>
<td valign='top'>
<select name="land" width="200px" style="width:200px"
onchange="setMenu(this.form, this.name);">
<option value=1>- - - - - - - - - - - -</option>
<option value=2> </option>
<option value=3> </option> <!-- indsæt toppe options af hensyn til NS4.x -->
<option value=4> </option>
<option value=5> </option>
<option value=6> </option>
<option value=7> </option>
<option value=8> </option>
<option value=9> </option>
<option value=10> </option>
</select>
</td>
<td valign='top'>
<select name="madsted" width="200px" style="width:200px"
onfocus="if (0>idxLand) this.blur();"
onchange="if (this.selectedIndex>0) setMenu(this.form, this.name);">
<option value=1>- - - - - - - - - - - -</option>
<option value=2> </option>
<option value=3> </option>
<option value=4> </option>
<option value=5> </option>
<option value=6> </option>
<option value=7> </option>
<option value=8> </option>
<option value=9> </option>
<option value=10> </option>
</select>
</td>
</tr>
</table></center>
</form>
<p>Bemærk at datamængden stiger exponentielt. Her med blot 3 valgmuligheder i hver select skal der loades 3*3 = 9 restaurantlinier. Med 6 valg i hver gruppe bliver tallet 6*6 = 36 restaurantlinier.
<p>Det kan blive så mange linier der skal hentes at det går hurtigere at hente ny data fra serveren for hvert valg.
<p>Især hvis du laver <A HREF="exp145224.html">flere niveauer</A> af selectbokse.</p>
<p align='right'><!-- WebWriter AutoDato -->Opdateret: 3.1.2002<!-- WW -->
</body>
</html>
/Nikolaj