js 带有checkbox的treeview的选中问题 asp. net 的treeview控件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <script language="javascript"> function OnNodesCheckChanged(eveId) { var element = event.srcElement; if(element.tagName == "INPUT" && element.type == "checkbox") { CheckAllNodesByID(eveId, element.id, element.checked); CheckParentNodesByID(eveId, element.id, element.checked); } } function CheckParentNodesByID(eveId, eleId, status) { var eleParent = document.getElementById(eleId).parentElement; while(eleParent.tagName != "DIV") { eleParent = eleParent.parentElement; } if(eleParent.id != eveId) { var curNum = parseInt(eleParent.id.replace("Nodes", "").replace(eveId + "n", ""), 10); var allNodesNum = GetCheckNodesNum(document.getElementById(eleParent.id.replace("CheckBox", "Nodes"))); for(var i = 1; i < allNodesNum + 1; i++) { var node = document.getElementById(eveId + "n" + (curNum + i) + "CheckBox"); if(node.id != eleId) { if(document.getElementById(eleParent.id.replace("Nodes", "CheckBox")).checked && node.checked) { return; } } } if(document.getElementById(eleParent.id.replace("Nodes", "CheckBox")) != null) { document.getElementById(eleParent.id.replace("Nodes", "CheckBox")).checked = status; CheckParentNodesByID(eveId, eleParent.id.replace("Nodes", "CheckBox"), status); } else { alert("error !"); } } } function CheckAllNodesByID(eveId, eleId, status) { if(eleId != null && eleId != "") { if(document.getElementById(eleId.replace("CheckBox", "") + "Nodes") != null) { var divNodes = document.getElementById(eleId.replace("CheckBox", "") + "Nodes"); var allNodesNum = GetCheckNodesNum(divNodes); var j = eleId.replace("CheckBox", "").replace(eveId + "n", ""); for(var i = 1; i < allNodesNum + 1; i++) { var num = parseInt(j, 10) + i; var node = document.getElementById(eleId.replace(j, num)); if(node != null) { node.checked = status; } } } } } function GetCheckNodesNum(div) { var num = 0; for(var i = 0; i < div.childNodes.length; i++) { if(div.childNodes[i].tagName == "DIV") num += GetCheckNodesNum(div.childNodes[i]); else if(div.childNodes[i].tagName == "TABLE") num++; } return num; } function SetNodesCheck(eveIds) { unSelectAll(); eveIds = eveIds.split(','); for(var i = 0; i < eveIds.length; i++) { var element = document.getElementById(eveIds[i]); element.checked = true; } } function GetAllNodesCheck(treeId) { if(document.getElementById(treeId).disabled) return false; var allInput = document.getElementsByTagName("input"); for(var i = 0; i < allInput.length; i++) { if(allInput[i].type.value = "checkbox" && allInput[i].checked) { document.getElementById("HiddenCheckBoxes").value += allInput[i].id + ","; } } } </script>这是以前写的代码, 你可以拿去试试. 不行再改改. treeview 里加 onclick="OnNodesCheckChanged('TreeView的ID');" jquery radio 事件写法,,3分钟结贴 javascript如何选中textarea一部分内容 求一个多表转换JSON的函数,什么语言写的都行。 类不能支持Automation操作 javascript 实现单双击选中行 请到手帮新手看一下下面replace函数的代码意思是啥? submit 确定按钮的问题 如何使鼠标点复选框后面的文字也能选中该框? 发现window.open()里面get传值超长会引起JS指针错误 关于Email验证的问题 请问jquery 如何hide table 里面的 <span>? sql中getString()取值问题。急急急……
<script language="javascript">
function OnNodesCheckChanged(eveId)
{
var element = event.srcElement;
if(element.tagName == "INPUT" && element.type == "checkbox")
{
CheckAllNodesByID(eveId, element.id, element.checked);
CheckParentNodesByID(eveId, element.id, element.checked);
}
}
function CheckParentNodesByID(eveId, eleId, status)
{
var eleParent = document.getElementById(eleId).parentElement;
while(eleParent.tagName != "DIV")
{
eleParent = eleParent.parentElement;
}
if(eleParent.id != eveId)
{
var curNum = parseInt(eleParent.id.replace("Nodes", "").replace(eveId + "n", ""), 10);
var allNodesNum = GetCheckNodesNum(document.getElementById(eleParent.id.replace("CheckBox", "Nodes")));
for(var i = 1; i < allNodesNum + 1; i++)
{
var node = document.getElementById(eveId + "n" + (curNum + i) + "CheckBox");
if(node.id != eleId)
{
if(document.getElementById(eleParent.id.replace("Nodes", "CheckBox")).checked && node.checked)
{
return;
}
}
}
if(document.getElementById(eleParent.id.replace("Nodes", "CheckBox")) != null)
{
document.getElementById(eleParent.id.replace("Nodes", "CheckBox")).checked = status;
CheckParentNodesByID(eveId, eleParent.id.replace("Nodes", "CheckBox"), status);
}
else
{
alert("error !");
}
}
}
function CheckAllNodesByID(eveId, eleId, status)
{
if(eleId != null && eleId != "")
{
if(document.getElementById(eleId.replace("CheckBox", "") + "Nodes") != null)
{
var divNodes = document.getElementById(eleId.replace("CheckBox", "") + "Nodes");
var allNodesNum = GetCheckNodesNum(divNodes);
var j = eleId.replace("CheckBox", "").replace(eveId + "n", "");
for(var i = 1; i < allNodesNum + 1; i++)
{
var num = parseInt(j, 10) + i;
var node = document.getElementById(eleId.replace(j, num));
if(node != null)
{
node.checked = status;
}
}
}
}
}
function GetCheckNodesNum(div)
{
var num = 0;
for(var i = 0; i < div.childNodes.length; i++)
{
if(div.childNodes[i].tagName == "DIV")
num += GetCheckNodesNum(div.childNodes[i]);
else if(div.childNodes[i].tagName == "TABLE")
num++;
}
return num;
}
function SetNodesCheck(eveIds)
{
unSelectAll();
eveIds = eveIds.split(',');
for(var i = 0; i < eveIds.length; i++)
{
var element = document.getElementById(eveIds[i]);
element.checked = true;
}
}
function GetAllNodesCheck(treeId)
{
if(document.getElementById(treeId).disabled)
return false;
var allInput = document.getElementsByTagName("input");
for(var i = 0; i < allInput.length; i++)
{
if(allInput[i].type.value = "checkbox" && allInput[i].checked)
{
document.getElementById("HiddenCheckBoxes").value += allInput[i].id + ",";
}
}
}
</script>这是以前写的代码, 你可以拿去试试. 不行再改改.