⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.html

📁 html树型结构 html树型结构
💻 HTML
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>xyTree使用示例</title>
    <link type="text/css" rel="stylesheet" href="xyTree/xtree.css" />
    <!-- 按照很多高手建议,所有的文件都应UTF-8编码,我sorry,用GBK -->


    <!-- 为了使用无复选框树,无顺序 -->
    <script src="xyTree/TreeNormal.js"></script>
    <script src="xyTree/NodeNormal.js"></script>
    <script src="xyTree/DivTreeNormal.js"></script>

    <!-- 为了使用带复选框树,无顺序 -->
    <script src="xyTree/DivTree.js"></script>
    <script src="xyTree/Tree.js"></script>
    <script src="xyTree/Node.js"></script>

    <!-- 数据js文件,必须最后加载,除了ajax树,因为是空的 -->
    <script src="data_example1.js"></script>
    <script src="data_example2.js"></script>
    <script src="data_example3.js"></script>
    <script src="data_example4.js"></script>
    <script src="data_example5.js"></script>
    <script src="data_example6.js"></script>


    <script>
//这句话重要,要写前面
  var Content2 = new xyTree.DivTree('《精通CSS》...');

//初始化方法
function init(){
  //行政区划树
  document.getElementById('ceshi1').appendChild(treeXiaqu.div);
  treeXiaqu.init(huidiao_Example1_Node, huidiao_Example1_RootNode); //这是自定义回调函数
  
  //xieye的最爱树
  document.getElementById('ceshi2').appendChild(myLove.div);
  myLove.init(huidiao_Example2_Node);
  
  //精通《CSS》树
  document.getElementById('ceshi3').appendChild(Content.div);
  Content.init(huidiao_Example3_Node, huidiao_Example1_RootNode);
  
  //我的电脑树
  document.getElementById('ceshi4').appendChild(myPC.div);
  myPC.init();//初始化方法不同
  
  //分局树2
  document.getElementById('ceshi5').appendChild(treeFenju2.div);
  treeFenju2.init();//初始化方法不同
  
  //分局树3
  document.getElementById('ceshi6').appendChild(treeFenju3.div);
  treeFenju3.init();//初始化方法不同
  
  //精通《CSS》树,模拟ajax
  document.getElementById('ceshi7').appendChild(Content2.div);
  Content2.init(huidiao_Example77,huidiao_Example77);
  

}

//这个函数需要用户写
function huidiao_Example1_Node(node){
  var  s = '行政区划代码:' + node.id 
          + '\n行政代码名称:' + node.name 
          + '\n节点序号:' + node.xuhao;
  alert(s);
}

//这个函数需要用户写,根节点,注意this的使用,
//  也可以换成树的对象名。
function huidiao_Example1_RootNode(){
  var s='';
  s+='当前树:';
  s+='\n节点总数(不含根节点) = '+(this.tree.treeArray.length-1);
  s+='\n层数(不含根节点的层) = '+this.tree.maxlevel;
  s+='\n根节点名称 = '+this.tree.treeArray[0].name;
  alert(s);
}

//用到的parent,tree等属性可以在API帮助中查到
function huidiao_Example2_Node(node){
  var s;
  s = node.name;
  ee(node);
  alert(s);
  //递归
  function ee(node){
    var parent = node.parent;
    s = parent.name + '/' + s;
    if (parent == node.tree.root) return;
    ee(parent);
  };
}

//例子3《精通CSS》树的回调
function huidiao_Example3_Node(node){
  var s;
  //打印3个属性,节点的属性只有name是必须的,别的是在js文件自行添加
  s =  '[' + node.name + ']开始于第' + node.page 
      + '页,字数是' + node.zishu;
  alert(s);
}


//为了演示效果定义的全局变量 
var loadinggifnode;


//想模拟ajax的朋友请看这里,  将来会专门写AjaxTree类和AjaxTreeNormal类

function huidiao_Example77(node){
  loadinggifnode = node; //为了使用定时器,没法带参数,只好使用全局变量
  if (node.child.length>0)return; //如果已经添加了子节点则返回
  if(node.nochild)return;         //如果节点有这个属性也返回,这个属性是给节点赋值时加的
  
  node.loadingGif();              //显示动画,表示需要从服务器获取子节点 
  setTimeout("huidiao_Example78()",1000);  //模拟ajax,调用下面的方法
}

function huidiao_Example78(){   //这个函数模拟服务器的回调
  var arr = {  //假定结果都有了
    '《精通CSS》...' :  ['第1章 基础知识...', '第2章 可视化格式模型...', '第3章 背景图像和图像替换...'],
    '第1章 基础知识...' :  ['1.1 设计代码的结构...', '1.2 为样式找到目标...', '1.3 规划、组织和维护样式表...'],
    '第2章 可视化格式模型...' :  ['2.1 框模型概述...', '2.2 定位概述...'],
    '第3章 背景图像和图像替换...' :  ['3.1 背景图像基础', '3.2 圆角框','3.3 阴影' , '3.3 图像替换'],
    '1.1 设计代码的结构...' :  ['1.1.1 使用有意义的标记','1.1.2 文档类型、DOCTYPE切换和浏览器模式'],
    '1.2 为样式找到目标...' :  ['1.2.1 常用的选择器','1.2.2 通用选择器','1.2.3 高级选择器','1.2.4 层叠和特殊性','1.2.5 继承'],
    '1.3 规划、组织和维护样式表...' :  ['1.3.1 对文档应用样式','1.3.2 对代码进行注释','1.3.3 样式指南','1.3.4 组织样式表以便简化维护'],
    '2.1 框模型概述...' :  ['2.1.1 IE/Win和框模型','2.1.2 空白边叠加'],
    '2.2 定位概述...' :  ['2.2.1 视觉格式化模型','2.1.2 空白边叠加','2.2.3 绝对定位','2.2.4 浮动']
  };
  
  var nodearr = [];
  var strarr = arr[loadinggifnode.name]; //使用对象的关联数组特性
  for(var i=0;i < strarr.length;i++){    //    获得节点的下一级子节点
    var newnode = new xyTree.Node(strarr[i]);
    newnode.toString = function (){return this.name;};//为了显示结果
    if(!((/\.\.\./).test(strarr[i])))  {//如果是...结尾的,加个属性

      newnode.nochild = true; //这句话是重要的,免得没子节点还ajax,自定义属性
    }
    nodearr.push(newnode);   
  } 
  loadinggifnode.addDynamic(nodearr); //动态添加
  loadinggifnode.loadingGifRenew(); //其实这句话完全可以不加
}




//以下几个函数是第一个示例的各种方法,注意它们的使用
//返回选中的记录(最常用,不含子节点)
function test(){
  var a = treeXiaqu.getNodes();
  if(a.length>0) alert(a.toString());
  else alert('请选中复选框'); 
}

//返回选中的记录(所有的),我的函数命名不好。
function test2(){
  var a =treeXiaqu.getNodesAll();
  if(a.length>0) alert(a.toString());
  else alert('请选中复选框'); 
}

//返回选中的记录(叶节点)
function test3(){
  var a =treeXiaqu.getNodesMoji();
  if(a.length>0) alert(a.toString());
  else alert('请选中复选框'); 
}

//返回选中的记录(叶节点)
function test4(){
  var a =treeXiaqu.getNodesDisplay();
  if(a.length>0) alert(a.toString());
  else alert('请选中复选框'); 
}







//测试demo7的返回节点是否正确
function testdemo7(){
  var a = Content2.getNodes();
  if(a.length>0) alert(a.toString());
  else alert('请选中复选框'); 
}


//隐藏树干
function hidetree(){
  treeXiaqu.hideTreeBody();
}

//显示树干
function showtree(){
  treeXiaqu.showTreeBody();
}

//清空所有复选框
function clear2(){
  treeXiaqu.initClearAllCheckBox();
}

//只复位形状
function clear3(){
  treeXiaqu.initTreeForm();
}

//完全复位树
function clear4(){
  treeXiaqu.initReset();
}

//定位一个节点
function expand(){
	var name = document.getElementById('select').value;//得到名字
  var node  = treeXiaqu.findOneNodeByName(name);//得到节点
  if(node)
   treeXiaqu.expandNode(node);//展开,有异常自动终止
}

//批量定位节点
function expand2(){
  treeXiaqu.initReset();
  var arr = [];
  var divarr = 
    document.getElementById('select').getElementsByTagName('option');
  //获得复选框里的名称指定的节点
  for(var i=0;i<divarr.length; i++){
    var node =  treeXiaqu.findOneNodeByName(divarr[i].value);
    if(node)  
      arr.push(node);
  }
  //自动的把一些节点展开,700这个参数可以不加,有默认时间,数字大,则时间长
  for(var i=0;i<arr.length; i++)
   treeXiaqu.expandNode(arr[i], 700);//展开
}

//批量定位节点并打勾
function expand3(){
  treeXiaqu.initReset();
  var arr = [];
  var divarr = 
    document.getElementById('select').getElementsByTagName('option');
  //获得复选框里的名称指定的节点
  for(var i=0;i<divarr.length; i++){
    var node =  treeXiaqu.findOneNodeByName(divarr[i].value);
    if(node)  
      arr.push(node);
  }
  //自动的把一些节点展开,700这个参数可以不加,有默认时间,数字大,则时间长
  for(var i=0;i<arr.length; i++)
   treeXiaqu.expandCheckedNode(arr[i], 700);//展开
   
}

//批量定位节点并打勾,最后收缩
function expand4(){
  expand3();
  //xieye:如果想把形状初始化则执行下面一句:
   treeXiaqu.initTreeForm();
   treeXiaqu.expandNode(treeXiaqu.tree.treeArray[0], 1);//这句话目的只是定位

}

//这两个函数分别展示了动态添加子节点的功能
//注意:添加子节点的节点本身必须在树上(但不一定可见)
//另:如果是根节点添加,直接用树添加,不必非要用节点
function test22(){
  var node1text = document.getElementById('text1').value;
  var node1 = treeXiaqu.findOneNodeByName(node1text);
  if(!node1){alert('请选择存在的节点');return;}
  
  var node2text = document.getElementById('text2').value;
  var node = new xyTree.Node(node2text);
  
  node1.addDynamic(node);
}

//动态添加数组
function test23(){
  var node1text = document.getElementById('text1').value;
  var node1 = treeXiaqu.findOneNodeByName(node1text);
  if(!node1){alert('请选择存在的节点');return;}
  
  node1.addDynamic([new xyTree.Node('地区1'),new xyTree.Node('地区2'),new xyTree.Node('地区4')]);
}


//定义初始化程序
window.onload = init;	
</script>

    <style>
      .size1{
        font:12px normal 宋体;
      }
    </style>
  </head>



  <body>

    <a href="API.html">《xyTree4.12》使用API手册</a>
    &nbsp;&nbsp;&nbsp;&nbsp;最新功能见示例7

    <div style="border:solid 1px black; padding:10px;">
      示例1
      <span class="size1">(带复选框,为您展示无限可能)</span>
      <br />
      <input type="button" value="根节点完全选中吗"
        onclick="alert(treeXiaqu.isSelectAll());" />&nbsp;
      <input type="button" value="返回选中的记录(不含子节点,较常用)" onclick="test()" /><br /><br />
      <input type="button" value="返回选中的记录(全部)" onclick="test2()" /> &nbsp;
      <input type="button" value="返回选中的记录(末端节点,就是叶节点)" onclick="test3()" />  <br /><br />
      <input type="button" value="返回选中的记录(正在打开的最末级节点,不一定是叶节点)" onclick="test4()" />  <br /><br />
      <input type="button" value="隐藏树身" onclick="hidetree()" />      &nbsp;
      <input type="button" value="显示树身" onclick="showtree()" />      &nbsp;
      <input type="button" value="清空所有节点" onclick="clear2()" />      &nbsp;
      <input type="button" value="树的形状复位" onclick="clear3()" />      &nbsp;
      <input type="button" value="树的形状复位+清空所有节点" onclick="clear4()" /> <br /> <br />
      <select id="select">
        <option value="(请选择)">(请选择)</option>
        <option value="北京市">北京市</option>
        <option value="江苏省">江苏省</option>
        <option value="西城区">西城区</option>
        <option value="海淀区">海淀区</option>
        <option value="南京市">南京市</option>
        <option value="镇江市">镇江市</option>
        <option value="栖霞区">栖霞区</option>
        <option value="六合区">六合区</option>
        <option value="临沂市">临沂市</option>
        <option value="瞎 写"> 瞎 写</option>
      </select>
      &nbsp;
      <input type="button" value="展开一个节点" onclick="expand()" />   &nbsp;
      <input type="button" value="复位+自动展开几个节点" onclick="expand2()" /> 
      <input type="button" value="复位+自动展开几个节点并选中" onclick="expand3()" />   <br />
      <input type="button" value="复位+自动展开几个节点并选中再收缩" onclick="expand4()" />   <br />   <br />
   
    往<input type="text" id="text1" size="10"/>节点
    <input type="button" value="动态添加子节点" onclick="test22()" />
    <input type="text" id="text2" size="10"/>&nbsp;&nbsp;
    或者
    <input type="button" value="动态添加数组[“地区1”“地区2”“地区4”]" 
      onclick="test23()" style="width:300px;"/>
    <br/>      
      <!--  这里就是第一棵树的摆放位置  -->
      <div id="ceshi1"></div>
    </div>

    <br />

    <div id="div6" style="border:solid 1px black; padding:10px;">
      示例7<span style="font:40px bole 宋体">new!</span>
      <span class="size1">(展示模拟<span style="color:red">ajax</span>的用法)</span>
      <input type="button" value="返回选中的记录(不含子节点,较常用)" onclick="testdemo7()" />
      <div id="ceshi7"></div>      <br />
    </div>

    <br />



    示例2
    <span class="size1">(带复选框,点击节点递归显示节点路径)</span>
    <div id="ceshi2"></div>    <br />
    示例3
    <span class="size1">(不带复选框,展示自定义节点额外属性,定义在数据文件中)</span>
    <div id="ceshi3"></div>    <br />

    <div style="border:solid 1px black; padding:10px;">
      示例4
      <span class="size1">(看出来和我的电脑的差别吗?自定义图片)</span>
      <div id="ceshi4"></div>     
    </div>
    <br />


    <div id="div5" style="border:solid 1px black; padding:10px;">
      示例5
      <span class="size1">(展示默认节点的单击方法,init方法不带参数)</span>
      <div id="ceshi5"></div>      <br />
      示例6
      <span class="size1">(与上面的区别是,默认为点击文件夹图标而不是复选框)</span>
      <div id="ceshi6"></div>      <br />
    </div>

    <br />





  </body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -