又是checkbox!!(菜鸟高呼)

学习ing 2010-05-21 10:35:07
现在要做一个点击父级的checkbox时 然属于他的子的checkbox也选中,但是父的和子的name不是固定不变的 所以不会搞了。
<input type="checkbox" name="<%=fu %>" onclick="clearCH();"/>这个是父的
<input type="checkbox" name="<%=fu %>+""+<%=zi%>" />这个是子的

这个方法该怎么写?
function clearCH(CHname){

}
...全文
148 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
学习ing 2010-05-21
  • 打赏
  • 举报
回复
谢谢大家的帮助,自己解决了,
function clearCH(CHtype){
var fname = CHtype;
var newtype = document.getElementById(CHtype);

var objform= window.document.getElementsByName("formtop")[0];
var objs =objform.getElementsByTagName("input");
for(var i=0; i<objs.length; i++){
if(objs[i].type.toLowerCase() == "checkbox" ){
if(newtype.checked==true){
if(objs[i].name.substring(0,4)==fname){
objs[i].checked = true;
}else objs[i].checked = false;
}
}
}
liuzhengyizenith 2010-05-21
  • 打赏
  • 举报
回复
function clearCH(CHname){
var father= document.getElementById("fatherid");
var child= document.getElementById("childid");
if(father.checked){
child.checked=true;
}else{
child.checked=false;
}

}
学习ing 2010-05-21
  • 打赏
  • 举报
回复
没有做权限 但是就是像你说的那样有关联的,因为是遍历出来的,name的值都不是固定的,按照一楼那样就得不到的。
xushuo2214940 2010-05-21
  • 打赏
  • 举报
回复
你是做权限吗 你可以给父设一个ID 假设取名fu 再给子取个ID 假设为fu-zi 这样你可以很好的关联啊,就像1楼那样判断一下 我想你是想做全选 的话 选择所有的子项是把!
学习ing 2010-05-21
  • 打赏
  • 举报
回复
我这种方法不怎么可行的话、那各位有什么好一点的办法,一上午就弄这个了,唉
学习ing 2010-05-21
  • 打赏
  • 举报
回复
哦,因为这些都是遍历出来的,我想让子name和父name关联起来,子name=父name+子name
但是现在是取不到子name的值
不知道怎么做
<input type="checkbox" name="<%=fu %>" onclick="clearCH(CHname);"/>
这个是父的,调用方法的时候把父的name给传过去
<input type="checkbox" name="<%=fu %>+""+<%=zi%>" />这个是子的、但是子的就不知道怎么得到了

function clearCH(CHname){

}

这个方法还是没有写出来。
shine333 2010-05-21
  • 打赏
  • 举报
回复
<input type="checkbox" name="<%=fu %>+""+<%=zi%>" />

假设fu = ab, zi = cd

生成的HTML的代码
<input type="checkbox" name="ab+""+cd" />

你的确认。

另外,js中document.getElementById()在IE8模式下已经不再支持name属性,因此建议都加上id属性
laorer 2010-05-21
  • 打赏
  • 举报
回复
zi是什么内容?循环吗?
如果不是的话,你需要一个列表来存储 父子级关系

Rogice 2010-05-21
  • 打赏
  • 举报
回复
给父子分别取两个不同的id

function selectAll(){
var father= document.getElementById("fatherid");
var child= document.getElementById("childid");
if(father.checked){
child.checked=true;
}else{
child.checked=false;
}
}

这样试试
zlx5219 2010-05-21
  • 打赏
  • 举报
回复
我给你改了一小下,
你的判断逻辑有点小错误, 除了你传入参数意外的checkbox都选上了或都不选上了
function clearCH(CHtype){
var fname = CHtype;
var nLength = CHtype.length;
var newtype = document.getElementById(CHtype);
var objform= window.document.getElementsByName("formtop")[0];
var objs =objform.getElementsByTagName("input");
for(var i=0; i<objs.length; i++){
if(objs[i].type.toLowerCase() == "checkbox" ){
if(objs[i].name.substring(0,nLength)==fname){
if(newtype.checked==true){
objs[i].checked = true;
}else{
objs[i].checked = false;
}
}
}
}
}
学习ing 2010-05-21
  • 打赏
  • 举报
回复
是的,不过要是父的name不是固定的话、那就麻烦了,先取到父的length在substring.....
现在就这样做吧、大家有好的办法分享一下啊
闭目鱼 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dyimming 的回复:]
谢谢大家的帮助,自己解决了,
function clearCH(CHtype){
var fname = CHtype;
var newtype = document.getElementById(CHtype);

var objform= window.document.getElementsByName("formtop")[0];
var objs =objform.getEl……
[/Quote]
父的名字固定只有4位?
_kaopu 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dyimming 的回复:]
谢谢大家的帮助,自己解决了,
function clearCH(CHtype){
var fname = CHtype;
var newtype = document.getElementById(CHtype);

var objform= window.document.getElementsByName("formtop")[0];
var objs =objform.getEl……
[/Quote]
我觉得还可以更活点,你让父框选中的时候传他自己的名字,然后在function中判断名字长度,下面的substring截取名字长度个字符,这样可以在父框名字长度不同的情况也可以试用...
一开始我想建议你放在一个div中 然后循环遍历div中元素选中呢..

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧