请帮忙!3组radiobutton连动的问题?? 这个可以用阿信的无限级下拉框连动http://www.kaifz.com/-t51960.htm 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感觉用radio不如用select啊,既然你要用radio的,等会我试着写个radio的 给你个例子,你参考下吧,说实话,可能帮不上什么忙,因为你是要到数据库中去取数据的,可以给你的思路,返回数据的时候返回已经组装好的HTML代码,在页面要动态显示的地方加一个<span>标签,然后在页面用JS修改这个标签的innerHTML代码<script language=javascript> function show(obj,index) { if(index==1) { var str1=obj.value var str2 var objs=document.getElementsByName("radio2") for(var i=0;i<objs.length;i++) { if(objs[i].checked) { str2=objs[i].value; break; } } } else { var str2=obj.value var str1 var objs=document.getElementsByName("radio1") for(var i=0;i<objs.length;i++) { if(objs[i].checked) { str1=objs[i].value; break; } } } var k=str1+str2 var objs=document.getElementsByName("radio3") for(var i=0;i<objs.length;i++) { if(objs[i].value==k) { objs[i].checked=true break; } } }</script><table border="1"><tr><td> <input name=radio1 type=radio value="1" onclick="show(this,1)" checked>数学 <input name=radio1 type=radio value="2" onclick="show(this,1)">外语</td></tr><tr><td><input name=radio2 type=radio value="1" onclick="show(this,2)" checked>一级 <input name=radio2 type=radio value="2" onclick="show(this,2)">二级</td></tr><tr><td> <input name=radio3 type=radio value="11">代数 <input name=radio3 type=radio value="12">几何 <input name=radio3 type=radio value="21">英语 <input name=radio3 type=radio value="22">法语</td></tr></table> 你需要两个文件,一个是前台html文件,用来展示那些radiobutton供顾客选择,并想办法动态显示第三组radiobutton内容如下: test.htm<table border width=60%><tr><td>科目</td><td>级别</td><td>课程</td></tr><tr><td><INPUT type=radio name=a1 id=t11 onclick=f(this) checked><label for=t11>数学</label><br><INPUT type=radio name=a1 id=t12 onclick=f(this) ><label for=t12>计算机</label><br><INPUT type=radio name=a1 id=t13 onclick=f(this) ><label for=t13>语文</label><br></td><td><INPUT type=radio name=a2 id=t21 onclick=f(this)><label for=t21>一级(小学)</label><br><INPUT type=radio name=a2 id=t22 onclick=f(this)><label for=t22>二级(中学)</label><br><INPUT type=radio name=a2 id=t23 onclick=f(this)><label for=t23>三级(大学)</label><br></td><td><div id=o> </div></td></tr></table><script>function f(obj){ var s="<INPUT type=radio name=a3 id=t3$><label for=t3$>#</label><br>" var lst=document.getElementsByName((obj.name=="a1")?"a2":"a1") for(var i=0;i<lst.length;i++){ if (lst[i].checked){ if (obj.name=="a1"){ var q=["a1=",obj.id,"&a2=",lst[i].id,"&r=",Math.random()].join("") }else{ var q=["a1=",lst[i].id,"&a2=",obj.id,"&r=",Math.random()].join("") } break; } } if (!q) return false var req =new ActiveXObject("Microsoft.XMLHTTP"); req.open("GET","http://localhost/t.asp?"+q, true); req.onreadystatechange = function(){ if (req.readyState == 4) { var arr=(unescape(req.responseText)).split("|") var arr2=[] for(var i=0;i<arr.length;i++) arr2.push(s.replace(/\$/g,i+1).replace("#",arr[i])) o.innerHTML=arr2.join("") } } req.send(null); }</script>另一个是asp文件,用来根据顾客的选择从数据库里面读取第三组radio的信息t.asp '注意我的这个t.asp是放在 http://localhost/t.asp里的,调试的时候先确保http://localhost/t.asp是存在的。可以根据需要修改test.htm中http://localhost/t.asp这个字串<% ''这里可以根据a1,a2进行复杂数据库查询, ''我这里只作为一个范例,直接用判断语句返回了 select case trim(Request.QueryString("a1")) & trim(Request.QueryString("a2")) case "t11t21": t="小学数学1|小学数学2|小学数学3|小学数学4" case "t11t22": t="中学数学1|中学数学2|中学数学3|中学数学4" case "t11t23": t="大学数学1|大学数学2|大学数学3|大学数学4" case "t12t21": t="小学计算机1|小学计算机2|小学计算机3|小学计算机4" case "t12t22": t="中学计算机1|中学计算机2|中学计算机3|中学计算机4" case "t12t23": t="大学计算机1|大学计算机2|大学计算机3|大学计算机4" case "t13t21": t="小学语文1|小学语文2|小学语文3|小学语文4" case "t13t22": t="中学语文1|中学语文2|中学语文3|中学语文4" case "t13t23": t="大学语文1|大学语文2|大学语文3|大学语文4"end selectResponse.Write escape(t) %> 当然ajax 返回的数据你可以用 xml来封装,那样显得更优雅,程序也更可读 有这么多人了,原理是一样的:1种方法,页面加载的时候把第3项的内容按一定的规律保存起来,然后根据前2个选的值生成第3项,这和连动下拉框的原理一样2种方法是用 ajax,直接到后台检索生成 很感谢各位的帮忙!我将另开一个100分贴感谢大家!很抱歉,我昨天描述的需求有些问题,应该是:只有第一组的radiobutton数目固定,第二和第三组的radiobutton数目都是根据第一组的选择动态生成的。我现在的想法是这样:从数据库取出所有的组合,放到一个3维数组中,然后根据第一组的选择生成第二和第三组的radiobutton,但我不知道在JS中如何使用3维数组,比如添加内容和查找匹配内容,请那位大侠给个例子,谢谢! 不用3维数组,用2维数组就可以http://community.csdn.net/Expert/topic/4591/4591670.xml?temp=.1432154 十分感谢mingxuan3000(铭轩)提供的链接,不好意思,还有个问题请教:怎么把数据库中取出的所有的3组radiobutton的组合记录JS的数组中呢? js小问题 这样的函数怎么调用啊,新手! js 正则表达式问题 怎么自动选择 打印机 来个神仙救救我吧,怎么能在ie上使用画图插件 prototype 1.6用户唯一性 怎样在客户端,用鼠标自由的拉动改变table中的td的大小? 如何提交别人的网页数据?? 关于层的clip属性。有会的吗?? IE能否区分不同标签页 如何取到这个值 如何获取媒体文件的加载进度?
<script language=javascript>
function show(obj,index)
{
if(index==1)
{
var str1=obj.value
var str2
var objs=document.getElementsByName("radio2")
for(var i=0;i<objs.length;i++)
{
if(objs[i].checked)
{
str2=objs[i].value;
break;
}
}
}
else
{
var str2=obj.value
var str1
var objs=document.getElementsByName("radio1")
for(var i=0;i<objs.length;i++)
{
if(objs[i].checked)
{
str1=objs[i].value;
break;
}
}
}
var k=str1+str2
var objs=document.getElementsByName("radio3")
for(var i=0;i<objs.length;i++)
{
if(objs[i].value==k)
{
objs[i].checked=true
break;
}
}
}
</script>
<table border="1">
<tr>
<td>
<input name=radio1 type=radio value="1" onclick="show(this,1)" checked>数学
<input name=radio1 type=radio value="2" onclick="show(this,1)">外语
</td>
</tr>
<tr>
<td><input name=radio2 type=radio value="1" onclick="show(this,2)" checked>一级
<input name=radio2 type=radio value="2" onclick="show(this,2)">二级</td>
</tr>
<tr>
<td> <input name=radio3 type=radio value="11">代数
<input name=radio3 type=radio value="12">几何
<input name=radio3 type=radio value="21">英语
<input name=radio3 type=radio value="22">法语
</td>
</tr>
</table>
内容如下: test.htm
<table border width=60%><tr><td>科目</td><td>级别</td><td>课程</td></tr><tr>
<td>
<INPUT type=radio name=a1 id=t11 onclick=f(this) checked><label for=t11>数学</label><br>
<INPUT type=radio name=a1 id=t12 onclick=f(this) ><label for=t12>计算机</label><br>
<INPUT type=radio name=a1 id=t13 onclick=f(this) ><label for=t13>语文</label><br>
</td>
<td>
<INPUT type=radio name=a2 id=t21 onclick=f(this)><label for=t21>一级(小学)</label><br>
<INPUT type=radio name=a2 id=t22 onclick=f(this)><label for=t22>二级(中学)</label><br>
<INPUT type=radio name=a2 id=t23 onclick=f(this)><label for=t23>三级(大学)</label><br>
</td>
<td><div id=o> </div></td></tr></table>
<script>
function f(obj){
var s="<INPUT type=radio name=a3 id=t3$><label for=t3$>#</label><br>"
var lst=document.getElementsByName((obj.name=="a1")?"a2":"a1")
for(var i=0;i<lst.length;i++){
if (lst[i].checked){
if (obj.name=="a1"){
var q=["a1=",obj.id,"&a2=",lst[i].id,"&r=",Math.random()].join("")
}else{
var q=["a1=",lst[i].id,"&a2=",obj.id,"&r=",Math.random()].join("")
}
break;
}
}
if (!q) return false
var req =new ActiveXObject("Microsoft.XMLHTTP");
req.open("GET","http://localhost/t.asp?"+q, true);
req.onreadystatechange = function(){
if (req.readyState == 4) {
var arr=(unescape(req.responseText)).split("|")
var arr2=[]
for(var i=0;i<arr.length;i++) arr2.push(s.replace(/\$/g,i+1).replace("#",arr[i]))
o.innerHTML=arr2.join("")
}
}
req.send(null);
}
</script>另一个是asp文件,用来根据顾客的选择从数据库里面读取第三组radio的信息
t.asp
'注意我的这个t.asp是放在 http://localhost/t.asp里的,调试的时候先确保http://localhost/t.asp是存在的。可以根据需要修改test.htm中http://localhost/t.asp这个字串<% ''这里可以根据a1,a2进行复杂数据库查询,
''我这里只作为一个范例,直接用判断语句返回了
select case trim(Request.QueryString("a1")) & trim(Request.QueryString("a2"))
case "t11t21":
t="小学数学1|小学数学2|小学数学3|小学数学4"
case "t11t22":
t="中学数学1|中学数学2|中学数学3|中学数学4"
case "t11t23":
t="大学数学1|大学数学2|大学数学3|大学数学4"
case "t12t21":
t="小学计算机1|小学计算机2|小学计算机3|小学计算机4"
case "t12t22":
t="中学计算机1|中学计算机2|中学计算机3|中学计算机4"
case "t12t23":
t="大学计算机1|大学计算机2|大学计算机3|大学计算机4"
case "t13t21":
t="小学语文1|小学语文2|小学语文3|小学语文4"
case "t13t22":
t="中学语文1|中学语文2|中学语文3|中学语文4"
case "t13t23":
t="大学语文1|大学语文2|大学语文3|大学语文4"
end select
Response.Write escape(t)
%>
1种方法,页面加载的时候把第3项的内容按一定的规律保存起来,然后根据前2个选的值生成第3项,这和连动下拉框的原理一样
2种方法是用 ajax,直接到后台检索生成
很抱歉,我昨天描述的需求有些问题,应该是:
只有第一组的radiobutton数目固定,第二和第三组的radiobutton数目都是根据第一组的选择动态生成的。
我现在的想法是这样:
从数据库取出所有的组合,放到一个3维数组中,然后根据第一组的选择生成第二和第三组的radiobutton,但我不知道在JS中如何使用3维数组,比如添加内容和查找匹配内容,请那位大侠给个例子,谢谢!
怎么把数据库中取出的所有的3组radiobutton的组合记录JS的数组中呢?