JS如何获取页面中cherkbox选中后的lable和b标签的内容

pard521 2013-04-18 10:44:03
代码段格式如下:我想获取前台checkbox选中后的lable和b标签的内容,如何写,新手,望不吝赐教!谢谢,还有一个问题,三级菜单选中的时候,如何默认让他的二级、一级菜单也选中?比如下面,我选中“产品目录信息”,默认“产品目录”和“产品工艺”前面的checkbox也处于选中状态,谢谢!

<td valign="top">
<table align="center" class="TableBlock">
<tbody><tr title="产品工艺" class="TableHeader">
<td nowrap="nowrap">
<input type="checkbox" onclick="check_all(this,'20');" id="MENU_20_16" name="MENU_20"/>
<img width="16" height="16" src="/img/menu/erp.gif"/>
<label for="MENU_20_16">
<b>产品工艺</b>
</label>
</td>
</tr>
<tr title="产品目录">
<td nowrap="nowrap" class="TableData">
<input type="checkbox" onclick="check_all_next(this,'20_2020');"value="96" id="20_17" name="20"/>
<img width="16" height="16" src="/img/menu/@work_plan.gif"/>
<label for="20_17">产品目录</label>
<br/> 
<input type="checkbox" value="97" id="20_2020_18" name="20"/>
<img width="16" height="16" src="/img/menu/work_plan.gif"/>
<label for="20_2020_18">产品目录信息</label>
<br/> 
<input type="checkbox" value="98" id="20_2020_19" name="20"/>
<img width="16" height="16" src="/img/menu/work_plan.gif"/>
<label for="20_2020_19">新建产品目录</label>
<br/> 
<input type="checkbox" value="114" id="20_2020_20" name="20"/>
<img width="16" height="16" src="/img/menu/work_plan.gif"/>
<label for="20_2020_20">产品目录维护</label>
</td>
</tr>
<tr title="工艺路线">
<td nowrap="nowrap" class="TableData">
<input type="checkbox" onclick="check_all_next(this,'20_2025');" value="126" id="20_21" name="20"/>
<img width="16" height="16" src="/img/menu/@office_Product.gif"/>
<label for="20_21">工艺路线</label>
<br> 
<input type="checkbox" value="179" id="20_2025_22" name="20"/>
<img width="16" height="16" src="/img/menu/office_Product.gif"/>
<label for="20_2025_22">工艺路线信息</label>
<br> 
<input type="checkbox" value="127" id="20_2025_23" name="20"/>
<img width="16" height="16" src="/img/menu/office_Product.gif"/>
<label for="20_2025_23">工艺路线维护</label>
<br> 
<input type="checkbox" value="607" id="20_2025_24" name="20"/>
<img width="16" height="16" src="/img/menu/office_Product.gif"/>
<label for="20_2025_24">工艺路线任务</label>
</td>
</tr>
</tbody>
</table>
</td>
...全文
245 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pard521 2013-04-19
  • 打赏
  • 举报
回复
有没有更好的方法,JQ也行
张运领 2013-04-18
  • 打赏
  • 举报
回复
window.onload = function(){
	document.onclick = function(e){
		e = e || window.event;
		//兼容浏览器并获取事件目标
		var eTarget = e.srcElement || e.target;
		//目标元素的标签
		var eType = eTarget.nodeName.toLowerCase();
		if(eType == "input"){
		//为了直接获取label,这个是针对这个文档的
			var contentValue = eTarget.nextSibling.nextSibling.nextSibling.nextSibling;
			//检测label下是否有b标签,有的话,取第一个。
			var hasB = contentValue.getElementsByTagName("b");
			if(0 != hasB.length){
				contentValue = hasB[0];
			}
			//弹出对应的值
			alert(contentValue.innerHTML);
			//取所有同级的input元素
			var eTargetParent = eTarget.parentNode.getElementsByTagName("input");
			var eTargetId = eTarget.getAttribute("id");
			//取得触发元素的id,并判断是否为这三个id,是的话,代表选择了总类的那个input
			if(eTargetId =="MENU_20_16" || eTargetId =="20_17" || eTargetId=="20_21" ){alert("123");
				if(eTargetParent[0].checked){
					for(var i=1;i<eTargetParent.length;i++){
						eTargetParent[i].checked = true;
					}
				}else{
					for(var i=1;i<eTargetParent.length;i++){
						eTargetParent[i].checked = false;
					}
				}
			}else{
			//否则的话,是选择了分类的input
				var flag = 0;
				for(var i=1;i<eTargetParent.length;i++){
					if(eTargetParent[i].checked == true){
						flag++;
					}
				}
				//只要有一个分类input是被选中的状态,那么总类的也是被选中
				if(!flag){
					eTargetParent[0].checked = false;
				}else{
					eTargetParent[0].checked = true;
				}
			}
		}
	}
};
试试能不能行,不知道这个是在哪搞的代码,写的有些没有层次性,向总类和分类,让总类和分类作为兄弟元素写,还是挺不好的。
pard521 2013-04-18
  • 打赏
  • 举报
回复
顶一下,让大婶们看见~我写了好长时间,没对~
clark_kidd 2013-04-18
  • 打赏
  • 举报
回复
取 input DOM 对象的 parent tag 中的 <b> 标签中的 innerHTML 或者取 input 标签的 next tag 的next tag 的 innerHTML 用 js或者 jQuery都很好实现吧

87,991

社区成员

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

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