selecttree(如何在选子菜单的同时把它上面的所有父菜单都选上)

hhb_cx 2005-02-18 11:38:22
请各位帮忙

selectTree的下载地址:
http://fason.nease.net/download/

我再把脚本贴出来吧(具体的脚本可以从上面的下载地址下载来看,就2个js)

demo.js脚本----------------------

var demo = new TreeView();
demo.setImagePath("images/");
demo.add(1,0,"根目录","javascript:void(0)",Icon.root.src);
demo.add(2,1,"子目录一","javascript:void(0)",null);
demo.add(3,1,"子目录二","javascript:void(0)",null);
demo.add(4,2,"孙目录一","javascript:void(0)",null);
demo.add(5,2,"孙目录二","javascript:void(0)",null);
demo.add(6,4,"曾孙目录一","javascript:void(0)",null);
demo.add(7,4,"曾孙目录二","javascript:void(0)",null);
demo.add(8,6,"玄孙目录一","javascript:void(0)",null);
demo.add(9,6,"玄孙目录二","javascript:void(0)",null);
demo.add(10,3,"孙目录一","javascript:void(0)",null);
demo.add(11,3,"孙目录二","javascript:void(0)",null);
demo.add(12,10,"曾孙目录一","javascript:void(0)",null);
demo.add(13,1,"曾孙目录二","javascript:void(0)",null);
demo.add(14,5,"曾孙目录一","javascript:void(0)",null);
demo.add(15,5,"曾孙目录二","javascript:void(0)",null);

...全文
844 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhb_cx 2005-02-18
  • 打赏
  • 举报
回复
在选任意一个子菜单它上面的父菜单都能够自动选上!
急!
hhb_cx 2005-02-18
  • 打赏
  • 举报
回复
tv.js脚本--------------------------


var Icon = {
root : "root.gif",
folderopen : "folderopen.gif",
folderclosed : "folderclosed.gif",
Rminus: "Rminus.gif",
Rplus: "Rplus.gif",
minusbottom: "Lminus.gif",
plusbottom: "Lplus.gif",
minus: "minus.gif",
plus: "plus.gif",
join: "T.gif",
joinbottom: "L.gif",
blank: "blank.gif",
line: "I.gif"
}

window.TV = [];
function TreeView()
{
this.id = window.TV.length;
window.TV[this.id] = this;
this.target = "_self";
this.checkbox = false;
this.Nodes ={ 0 : { ID : 0, ParentID : -1, Text : null, Href : null, Image : null, childNodes: new Array() } };
}
var tv = TreeView.prototype;
tv.setTarget = function(v) {
this.target = v;
}
tv.setCheckbox = function(v) {
this.checkbox = v;
}
tv.setName = function(v) {
this.name = v;
}
tv.setImagePath = function(sPath) {
for(o in Icon){
tmp = sPath + Icon[o];
Icon[o] = new Image();
Icon[o].src = tmp;
}
}
tv.add = function(iD,ParentiD,sText,sHref,sImage) {
this.Nodes[iD] = { ID : iD, ParentID : ParentiD, Text : sText, Href : sHref, Image : sImage , childNodes: new Array() , open : false , checked : false };
var ch = this.getNode(ParentiD).childNodes;
ch[ch.length] = this.Nodes[iD];
};
tv.getNode = function(sKey) {
if (typeof this.Nodes[sKey] != "undefined")
{
return this.Nodes[sKey];
}
return null;
};
tv.getParentNode = function(ID) {
var key = this.getNode(ID).ParentID;
if(this.getNode(key) == null) return null;
return this.getNode(key);
}
tv.hasChildNodes = function(sKey) {
return this.getNode(sKey).childNodes.length > 0;
};
tv.isLastNode = function(sKey) {
var node = this.getNode(sKey);
var par = this.getParentNode(sKey);
if(par == null) node.isLast = true;
else if (typeof node["isLast"] == "undefined") {
for(var i = 0;i<par.childNodes.length;i++)
if(par.childNodes[i].ID == sKey) break;
node.isLast = (i == par.childNodes.length-1)
}
return node.isLast;
};
tv.getRoot = function(ID) {
var par = this.getParentNode(ID);
if (this.getNode(ID).ParentID == 0)
{
return this.getNode(ID);
}
else
{
return this.getRoot(par.ID);
}
}
tv.drawNode = function(ID) {
var html = "";
var node = this.getNode(ID);
var rootid = this.getRoot(ID).ID;
var hc = this.hasChildNodes(ID);
html += '<div class="TreeNode" nowrap>'+this.drawIndent(ID)+
'<a id="node'+ID+'" class="Anchor" href="'+node.Href+'" target="'+this.target+'" onclick ="window.TV['+this.id+'].openFolder('+ID+')" ondblclick="window.TV['+this.id+'].openHandler('+ID+')"><img id="folder'+ID+'" src="'+( node.Image ? node.Image : Icon.folderclosed.src)+'" align="absmiddle">'+
(this.checkbox ? ('<input type=checkbox id="checkbox'+ID+'" name="'+this.name+'" onclick="window.TV['+this.id+'].oncheck('+ID+')">') : '')+
'<span>'+ node.Text +'</span></a></div>\n'
if (hc) {
var io = ID == rootid;
node.open = io;
html += ('<div id="container'+ID+'" style="display:'+(io ? '' : 'none')+'">\n');
html += this.addNode(ID);
html += '</div>\n';
}
return html;
}

tv.addNode = function(ID) {
var node = this.getNode(ID);
var html = "";
for(var i = 0;i<node.childNodes.length;i++)
html += this.drawNode(node.childNodes[i].ID);
return html;
}

tv.drawIndent = function(ID) {
var s = ''
var ir = this.getRoot(ID).ID == ID;
var hc = this.hasChildNodes(ID);
if(this.getParentNode(ID) != null)
s += ((hc ? '<a href="javascript:void window.TV['+this.id+'].openHandler('+ID+');" target="_self">':'')+'<img id="handler'+ID+'" src="'+ (this.hasChildNodes(ID) ? (ir ? Icon.Rminus.src : (this.isLastNode(ID) ? Icon.plusbottom.src : Icon.plus.src)) : (ir ? Icon.blank.src : (this.isLastNode(ID) ? Icon.joinbottom.src : Icon.join.src))) + '" align="absmiddle">'+(hc?'</a>':''));
var p = this.getParentNode(ID);
while(p != null)
{
if(this.getParentNode(p.ID) == null)break;
s = ('<img src="'+(this.isLastNode(p.ID) ? Icon.blank.src : Icon.line.src) + '" align="absmiddle">')+s;
p = this.getParentNode(p.ID);
}
return s;
}
tv.setSelected = function(ID) {
if(this.selectedID) { document.getElementById("node" + this.selectedID).className = "Anchor";}
this.selectedID = ID;
document.getElementById("node" + ID).className = "selected";
}
tv.oncheck = function(ID) {
var o = this.getNode(ID);
var v = o.checked;
o.checked = document.getElementById("checkbox" + ID).checked;
this.checkChildren(ID,o.checked);
this.checkParent(ID);
};
tv.check = function(ID,v){
this.getNode(ID).checked = v;
document.getElementById("checkbox" + ID).checked = v;
}
tv.checkChildren = function(ID,v){
var ch = this.getNode(ID).childNodes;
for(var i = 0;i<ch.length;i++){
this.check(ch[i].ID,v);
this.checkChildren(ch[i].ID,v);
}
}
tv.checkParent = function(ID) {
var par = this.getParentNode(ID);
if(ID != this.getRoot(ID).ID){
for(var j = 0;j<par.childNodes.length;j++)
if(!par.childNodes[j].checked) break;
this.check(par.ID,(j == par.childNodes.length));
this.checkParent(par.ID);
}
}

tv.openHandler = function(ID) {
if (this.hasChildNodes(ID)) {
if (this.getNode(ID).open) {
this.collapse(ID);
}
else {
this.expand(ID);
}
}
}
tv.expand = function(ID) {
var handler = document.getElementById("handler"+ID);
var container = document.getElementById("container"+ID);
handler.src = this.getRoot(ID).ID == ID ? Icon.Rminus.src : ( this.getNode(ID).isLast ? Icon.minusbottom.src : Icon.minus.src);
container.style.display = '';
this.getNode(ID).open = true;
}
tv.collapse = function(ID) {
var handler = document.getElementById("handler"+ID);
var container = document.getElementById("container"+ID);
handler.src = this.getRoot(ID).ID == ID ? Icon.Rplus.src : ( this.getNode(ID).isLast ? Icon.plusbottom.src : Icon.plus.src);
container.style.display = 'none';
this.getNode(ID).open = false;
}
tv.openFolder = function(ID)
{
if(this.selectedID){
if(this.getNode(this.selectedID).Image == null) {document.getElementById("folder"+this.selectedID).src = Icon.folderclosed.src;}
}
var folder = document.getElementById("folder" + ID);
if(this.getNode(ID).Image == null) folder.src = Icon.folderopen.src;
this.setSelected(ID);
this.selectedID = ID;
folder.parentNode.blur();
}
tv.toString = function() {
return this.addNode(0);
}


html页面的主要html语句---------------------------------------
<link rel ="stylesheet" type="text/css" href="css/TreeView.css">
<script language="JavaScript" src="js/tv.js"></script>
<script language="JavaScript" src="js/demo.js"></script>
<script language="JavaScript">
<!--
function fSelect()
{
var chk = demo.Nodes;
for(var o in chk)
{
if(chk[o].Text == "曾孙目录二")
chk[o].checked = true;
}
}
//-->
</script>
</head>
<body>
<script language="JavaScript">
<!--
demo.setCheckbox(true);
demo.setName = "demoTree";
document.write(demo)
//-->
</script>
<br><br>
<input type="button" value=" test " onclick="fSelect()">
</body>
</html>

87,901

社区成员

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

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