小弟在线期待大家的指点。
补充以下代码给大家研究
<%
'从小类表中取出数据
set rs=server.CreateObject("adodb.recordset")
sql="select * from b2b_parductppp "
rs.open sql,conn,1,1
%>
<script language="JavaScript">
var num;
//定义数组
var calArray=new Array();
<%
dim j
j=0
do while not rs.eof
%>
//将小类表中的所有相关记录存到数组calArray的对应元素中,红色加粗值类型为文本型。
calArray[<%=j%>]=new Array("<%=rs("MarkID")%>","<%=rs("MarkName")%>","<%=rs("category")%>");
<%
j=j+1
rs.movenext
loop
rs.close
set rs=nothing
%>
//给num赋值为记录总数
num=<%=j%>
function givevalue(myvalue){
/*当选择大类列表的值不为空时首先清空小类下拉列表的所有项目。不然小类列表中的项目会叠加的。
同时也是初始化 options 的值为0 */
document.myform.SelectMark.length = 0;
//循环写出请求的大类所对应的小类。
for (i=0;i < num; i++)
{
if (calArray[i][2] == myvalue)
{
document.myform.SelectMark.options[document.myform.SelectMark.length] = new Option(calArray[i][1], calArray[i][0],"","");
/*定义新的Option对象并赋值。options的索引值从0开始。new Option对象有4个属性,对应分别是:文本串、value、defaultSelect、selected。在这里只用了第一个和第二个。*/
}
}
}
</script>
---------------------------------------------------------------------------------------------------------
大类选择列表框
<select name="categoryid" onChange="givevalue(document.myform.categoryid.options[document.myform.categoryid.selectedIndex].value)">
<option value="0">---选择类别---</option>
<%
sort(0)
dim ii
ii=0
dim firstid
sub sort(selec)
sql="select * from category where ParentID = "&selec&" order by categoryorder"
Set Rs1=Conn.Execute(sql)
if rs1.eof or rs1.bof then
noclass=1
else
rs1.movefirst
firstid=rs1("categoryid")
do while not rs1.eof
if selec=0 then
%>
<option value="<%=int(rs1("categoryid"))%>"><%=rs1("category")%></option>
<%
else
%>
<option value="<%=int(rs1("categoryid"))%>"><%=string(ii*2," ")%><%=rs1("category")%></option>
<%
end if
ii=ii+1
sort rs1("categoryid")
ii=ii-1
rs1.movenext
loop
rs1.close
Set Rs1 = Nothing
end if
end sub
%>
</select>
-----------------------------------------------------------------------------------------------------------
小类关联列表框
<select name="SelectMark" >
<%if noclass=1 then%>
<option value="" selected>暂无品牌</option>
<%
else
'在没有选择大类(页面刚载入)时要载入的小类,要跟默认的大类对应。
set rs=server.CreateObject("adodb.recordset")
sql="select * from b2b_parductppp where category like '%"&firstid&"%' "
rs.open sql,conn,1,1
if rs.eof or rs.bof then
%>
<option value="" selected>暂无品牌</option>
<%
else
do while not rs.eof
%>
<option value="<%=rs("MarkID")%>"><%=trim(rs("MarkName"))%></option>
<%
rs.movenext
loop
end if
rs.close
set rs=nothing
end if
%>
</select>
----------------------------------------------------------------------------------------------------------
firstid 为 一级大类的联动关键值
无论这样sql="select * from b2b_parductppp where category like '%'"&firstid&"'%' "
还是这样sql="select * from b2b_parductppp where category like '%"&firstid&"%' "
补充以下代码给大家研究
<%
'从小类表中取出数据
set rs=server.CreateObject("adodb.recordset")
sql="select * from b2b_parductppp "
rs.open sql,conn,1,1
%>
<script language="JavaScript">
var num;
//定义数组
var calArray=new Array();
<%
dim j
j=0
do while not rs.eof
%>
//将小类表中的所有相关记录存到数组calArray的对应元素中,红色加粗值类型为文本型。
calArray[<%=j%>]=new Array("<%=rs("MarkID")%>","<%=rs("MarkName")%>","<%=rs("category")%>");
<%
j=j+1
rs.movenext
loop
rs.close
set rs=nothing
%>
//给num赋值为记录总数
num=<%=j%>
function givevalue(myvalue){
/*当选择大类列表的值不为空时首先清空小类下拉列表的所有项目。不然小类列表中的项目会叠加的。
同时也是初始化 options 的值为0 */
document.myform.SelectMark.length = 0;
//循环写出请求的大类所对应的小类。
for (i=0;i < num; i++)
{
if (calArray[i][2] == myvalue)
{
document.myform.SelectMark.options[document.myform.SelectMark.length] = new Option(calArray[i][1], calArray[i][0],"","");
/*定义新的Option对象并赋值。options的索引值从0开始。new Option对象有4个属性,对应分别是:文本串、value、defaultSelect、selected。在这里只用了第一个和第二个。*/
}
}
}
</script>
---------------------------------------------------------------------------------------------------------
大类选择列表框
<select name="categoryid" onChange="givevalue(document.myform.categoryid.options[document.myform.categoryid.selectedIndex].value)">
<option value="0">---选择类别---</option>
<%
sort(0)
dim ii
ii=0
dim firstid
sub sort(selec)
sql="select * from category where ParentID = "&selec&" order by categoryorder"
Set Rs1=Conn.Execute(sql)
if rs1.eof or rs1.bof then
noclass=1
else
rs1.movefirst
firstid=rs1("categoryid")
do while not rs1.eof
if selec=0 then
%>
<option value="<%=int(rs1("categoryid"))%>"><%=rs1("category")%></option>
<%
else
%>
<option value="<%=int(rs1("categoryid"))%>"><%=string(ii*2," ")%><%=rs1("category")%></option>
<%
end if
ii=ii+1
sort rs1("categoryid")
ii=ii-1
rs1.movenext
loop
rs1.close
Set Rs1 = Nothing
end if
end sub
%>
</select>
-----------------------------------------------------------------------------------------------------------
小类关联列表框
<select name="SelectMark" >
<%if noclass=1 then%>
<option value="" selected>暂无品牌</option>
<%
else
'在没有选择大类(页面刚载入)时要载入的小类,要跟默认的大类对应。
set rs=server.CreateObject("adodb.recordset")
sql="select * from b2b_parductppp where category like '%"&firstid&"%' "
rs.open sql,conn,1,1
if rs.eof or rs.bof then
%>
<option value="" selected>暂无品牌</option>
<%
else
do while not rs.eof
%>
<option value="<%=rs("MarkID")%>"><%=trim(rs("MarkName"))%></option>
<%
rs.movenext
loop
end if
rs.close
set rs=nothing
end if
%>
</select>
----------------------------------------------------------------------------------------------------------
firstid 为 一级大类的联动关键值
无论这样sql="select * from b2b_parductppp where category like '%'"&firstid&"'%' "
还是这样sql="select * from b2b_parductppp where category like '%"&firstid&"%' "
问题在网友“做人很低调”的帮助下,问题完美解决了,只是把JS代码中的if中的条件换成calArray[i][2].indexOf(myvalue)!=-1 就实现了我所需要的效果!