javascript 循环显示输出的时候, 展开隐藏的问题 50

我从数据库读出姓名,学号,并通过循环输出到前台,我想通过checkbox来实现姓名的展开和隐藏,但是我下面的写法只能实现第一个姓名的展开和隐藏,请问是哪里出的问题?<in... 我从数据库读出姓名,学号,并通过循环输出到前台,我想通过checkbox来实现姓名的展开和隐藏,但是我下面的写法只能实现第一个姓名的展开和隐藏,请问是哪里出的问题?
<input type="checkbox" name="check_s" id="check_s" onclick="check(this.id)" />
{{for s in test:}}
<div id="show_hidden" >{{=XML(s.name)}}</div>
{{pass}}
function check(action){
var b = document.getElementById(action);
if (b.checked==true)
{
document.getElementById("show_hidden").style.display='block';

}
else
{
document.getElementById("show_hidden").style.display='none';

}
}
展开
 我来答
阳光上的桥
2011-11-02 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65816
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
因为你的check函数始终是控制document.getElementById("show_hidden")的显示开关,这样所有的checkbox都控制第一个,要让每个checkbox控制自己的的内容,那么要修改三个地方:每个checkbox的id、每个div的id、check函数,例如可以这样:

<input type="checkbox" name="check_s" id="check_s1" onclick="check(this.id)" />
{{for s in test:}}
<div id="show_hidden_check_s1" >{{=XML(s.name)}}</div>
{{pass}}
function check(action){
var b = document.getElementById(action);
if (b.checked==true)
{
document.getElementById("show_hidden_"+action).style.display='block';

}
else
{
document.getElementById("show_hidden_"+action).style.display='none';

}
}


<input type="checkbox" name="check_s" id="check_s1" onclick="check(this.id)" />


<div id="show_hidden_check_s1" >{{=XML(s.name)}}</div>


document.getElementById("show_hidden_"+action).style.display='block';
document.getElementById("show_hidden_"+action).style.display='none';
shshshdy
2011-11-02 · TA获得超过102个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:186万
展开全部
首先
你有一个大的错误 id 肯定是唯一性的,所以即使你写了多个一样的id,只会获取到第一个
处理方法
1 给checkbox一个对应的唯一性id ,对应的div 也是同理,这在循环输出的时候很好处理,
比如
check_s0,show_hidden0;
check_s1,show_hidden1
只需要传 0,1这些编号,再去拼接对应的id
2 直接利用javascript,把 onclick="check(this.id)" 改为 onclick="check(this)"
得到这个对象(obj)后得到
var checks = document.getElementsByName("check_s");
var divs = document.getElementsByName("show_hidden");
for(var =0;i<checks.length;i++) {
if(checks[i]==obj) {
//对应你的处理 if (checks[i].checked) { //divs[i].style.displa='block'} else {//none}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式