オンラインで多くの第3レベルのメニューがありますが、コードは迷惑です。私はこれが非常に直感的だと言うべきです:
「言うまでもなく、最初にデータベースに接続することは間違いなく必要です
'データベース構造
'カテゴリ1表名:フィールド:ID、名前説明:IDはプライマリキーであり、カテゴリ1のID値、名前はカテゴリ1の名前です
'カテゴリ2テーブル名:AAフィールド:ID、AID、名前説明:IDはプライマリキーであり、カテゴリ2のID値、AIDはカテゴリ1のID値、名前はカテゴリ2の名前です
'カテゴリ3テーブル名:AAAフィールド:ID、AID、AAID、名前説明:IDはプライマリキーであり、カテゴリ3のID値、AIDはカテゴリ1のID値、AAIDはカテゴリ2のID値、名前はカテゴリ3の名前です
====== test1.aspテストできます。カテゴリのすべての受信ID値====
<%
Response.Write "1:"&request.form( "s1")& "<br>"
Response.Write "2:"&request.form( "s2")& "<br>"
Response.Write "3:"&request.form( "s3")& "<br>"
%>
コードコピーは次のとおりです。
<! - 3レベルのリンケージメニュー開始 - >
<ScriptLanguage = "JavaScript">
<! -
<%
'二次データを配列に保存します
dimcount2、rsclass2、sqlclass2
setrsclass2 = server.createObject( "adodb.recordset")
sqlclass2 = "select*froma"
rsclass2.opensqlclass2、conn、1,1
%>
varsubval2 = newArray();
//配列構造:第1レベルのルート値、セカンドレベルのルート値、セカンドレベルの表示値
<%
count2 = 0
dowhileenotrsclass2.eof
%>
subval2 [<%= count2%>] = newArray( '<%= rsclass2( "aid")%>'、 '<%= rsclass2( "id")%>'、 '<%= rsclass2( "name")%>')
<%
count2 = count2+1
rsclass2.movenext
ループ
rsclass2.close
%>
<%
'3レベルのデータを配列に保存します
dimcount3、rsclass3、sqlclass3
setrsclass3 = server.createObject( "adodb.recordset")
sqlclass3 = "select*fromaa"
rsclass3.opensqlclass3、conn、1,1
%>
varsubval3 = newArray();
//配列構造:セカンドレベルのルート値、サードレベルのルート値、サードレベルの表示値
<%
count3 = 0
dowhileenotrsclass3.eof
%>
subval3 [<%= count3%>] = newArray( '<%= rsclass3( "aaid")%>'、 '<%= rsclass3( "id")%>'、 '<%= rsclass3( "name")%>')
<%
count3 = count3+1
rsclass3.movenext
ループ
rsclass3.close
%>
functionchangeselect1(locationId)
{
document.form1.s2.length = 0;
document.form1.s2.options [0] = newoption( '== category =='、 '');
document.form1.s3.length = 0;
document.form1.s3.options [0] = newoption( '==トピック=='、 '');
for(i = 0; i <subval2.length; i ++)
{
if(subval2 [i] [0] == locationid)