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

📄 index.html

📁 javascrip编写的树状菜单 javascrip编写的树状菜单
💻 HTML
字号:
<html>

<head>
<title>节点创建</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type=text/css>
.text_input  { background-color: #EEEEEE; }
</style>
</head>

<body>
<form onsubmit="return false">
  <button onclick="createNode(0)">增加同级节点</button>
  <button onclick="createNode(1)">增加子节点</button>
  <button onclick="deleteNode()">删除</button>
  <button onclick="moveUp()">上移</button>
  <button onclick="moveDown()">下移</button>
  <button onclick="moveFront()">前移</button>
  <button onclick="moveBack()">后移</button><br><br>
  <span id=nodeNote class=node_note>&nbsp;</span><br><br>
  <div id=dynamicNode>
    <nobr>Root</nobr>
    <div style='margin-left:17px;padding:1px;'><nobr onclick='autoSelect(this)'><img
    onclick="nodeTree(this)" src='images/end.gif'><input type=radio style='display:none;'
    checked name=nodeItem onpropertychange='selectNode(this)'><input type=hidden
    value=1><input onfocus='autoSelect(this.parentNode)'></nobr></div>
  </div>
</form>

<script language=javascript>
var icons=new Array();  //使用到的图标
icons["dot"]="images/end.gif";  //没有下级节点的图标
icons["plus"]="images/plus.gif";  //有下级节点且当前状态为展开的图标
icons["sub"]="images/min.gif";  //有下级节点且当前状态为收缩的图标

var activeNode=document.getElementById("dynamicNode").getElementsByTagName("DIV")[0];
activeNode.getElementsByTagName("INPUT")[0].checked=true;

function createNode(bChild)  //创建节点。bChild为0时,创建同级节点;bChild为1时,创建子节点。
{
  var nodeGrade;
  if(activeNode.id=="dynamicNode")
    nodeGrade=1;
  else
    if(bChild)
      nodeGrade=parseInt(activeNode.getElementsByTagName("INPUT")[1].value)+1
    else
      nodeGrade=activeNode.getElementsByTagName("INPUT")[1].value
  if(bChild&&activeNode.id!="dynamicNode")
    if(activeNode.getElementsByTagName("IMG")[0].getAttribute("src",2)==icons["plus"])
      nodeTree(activeNode.getElementsByTagName("INPUT")[0]);
  var theElement=document.createElement("<DIV style='margin-left:17px;padding:1px;'>");
  theElement.innerHTML="<nobr onclick='autoSelect(this)'>"+
  "<img src='"+icons["dot"]+"' onclick='nodeTree(this)'>"+
  "<input type=radio style='display:none;' name=nodeItem onpropertychange='selectNode(this)'>"+
  "<input type=hidden value='"+nodeGrade+"'>"+
  "<input onfocus='autoSelect(this.parentNode)'>"+
  "</nobr>";
  if(bChild||activeNode.id=="dynamicNode")
  {
    activeNode.insertBefore(theElement);
    if(activeNode.id!="dynamicNode")
      activeNode.getElementsByTagName("IMG")[0].src=icons["sub"];
  }
  else
    activeNode.parentNode.insertBefore(theElement,activeNode.nextSibling);
  theElement.getElementsByTagName("INPUT")[0].checked=true;
}

function deleteNode()  //删除节点,包括该节点下的所有子节点。
{
  if(!confirm("你确认要删除该节点吗?\n如果该节点下有子节点,那么连同子节点也会一并删除。\n继续请点“确定”,否则点“取消”。"))
  {
    activeNode.getElementsByTagName("INPUT")[2].focus();
    return;
  }
  if(activeNode.id=="dynamicNode")
    document.getElementById("nodeNote").innerHTML="没有可以删除的节点!";
  else
  {
    theNode=activeNode
    if(activeNode.nextSibling)
      activeNode=activeNode.nextSibling;
    else if(activeNode.previousSibling.tagName=="DIV")
      activeNode=activeNode.previousSibling;
    else
    {
      activeNode=activeNode.parentNode;
      activeNode.getElementsByTagName("IMG")[0].src=icons["dot"];
    }
    theNode.removeNode(true);
    if(activeNode.id!="dynamicNode")
      activeNode.getElementsByTagName("INPUT")[0].checked=true;
  }
}

function moveUp()  //上移
{
  if(activeNode.id=="dynamicNode")
  {
    document.getElementById("nodeNote").innerHTML="没有可以上移的节点!";
    return;
  }
  if(activeNode.previousSibling.tagName!="DIV")
  {
    document.getElementById("nodeNote").innerHTML="该节点已位于同级节点的最上面!";
    activeNode.getElementsByTagName("INPUT")[2].focus();
    return;
  }
  theElement=activeNode.cloneNode(true);
  activeNode.parentNode.insertBefore(theElement,activeNode.previousSibling);
  activeNode.removeNode(true);
  activeNode=theElement;
  activeNode.getElementsByTagName("INPUT")[2].focus();
}

function moveDown()  //下移
{
  if(activeNode.id=="dynamicNode")
  {
    document.getElementById("nodeNote").innerHTML="没有可以下移的节点!";
    return;
  }
  if(!activeNode.nextSibling)
  {
    document.getElementById("nodeNote").innerHTML="该节点已位于同级节点的最下面!";
    activeNode.getElementsByTagName("INPUT")[2].focus();
    return;
  }
  theElement=activeNode.cloneNode(true);
  activeNode.parentNode.insertBefore(theElement,activeNode.nextSibling.nextSibling);
  activeNode.removeNode(true);
  activeNode=theElement;
  activeNode.getElementsByTagName("INPUT")[2].focus();
}

function moveFront()  //前移
{
  if(activeNode.id=="dynamicNode")
  {
    document.getElementById("nodeNote").innerHTML="没有可以前移的节点!";
    return;
  }
  if(activeNode.getElementsByTagName("INPUT")[1].value=="1")
  {
    document.getElementById("nodeNote").innerHTML="该节点已处于最顶级!";
    activeNode.getElementsByTagName("INPUT")[2].focus();
    return;
  }
  if(activeNode.parentNode.childNodes.length==2)
    activeNode.parentNode.getElementsByTagName("IMG")[0].src=icons["dot"];
  var inputs=activeNode.getElementsByTagName("INPUT");
  for(var i=0; i<inputs.length; i++)
    if(inputs[i].type=="hidden")
      inputs[i].value=parseInt(inputs[i].value)-1;
  theElement=activeNode.cloneNode(true);
  activeNode.parentNode.parentNode.insertBefore(theElement,activeNode.parentNode);
  activeNode.removeNode(true);
  activeNode=theElement;
  activeNode.getElementsByTagName("INPUT")[2].focus();
}

function moveBack()  //后移
{
  if(activeNode.id=="dynamicNode")
  {
    document.getElementById("nodeNote").innerHTML="没有可以后移的节点!";
    return;
  }
  if(activeNode.previousSibling.tagName!="DIV")
  {
    document.getElementById("nodeNote").innerHTML="位于同级节点最上面的不可以向后移动!";
    activeNode.getElementsByTagName("INPUT")[2].focus();
    return;
  }
  activeNode.previousSibling.getElementsByTagName("IMG")[0].src=icons["sub"];
  var inputs=activeNode.getElementsByTagName("INPUT");
  for(var i=0; i<inputs.length; i++)
    if(inputs[i].type=="hidden")
      inputs[i].value=parseInt(inputs[i].value)+1;
  theElement=activeNode.cloneNode(true);
  activeNode.previousSibling.insertBefore(theElement);
  activeNode.removeNode(true);
  activeNode=theElement;
  activeNode.getElementsByTagName("INPUT")[2].focus();
}

function selectNode(obj)  //选择节点输入框时发生的动作
{
  if(obj.checked)
  {
    obj.parentNode.getElementsByTagName("INPUT")[2].className='text_input';
    obj.parentNode.getElementsByTagName("INPUT")[2].focus();
    activeNode=obj.parentNode.parentNode;
  }
  else
    obj.parentNode.getElementsByTagName("INPUT")[2].className='active_node';
}

function autoSelect(obj)  //选择节点输入框
{
  obj.getElementsByTagName("INPUT")[0].checked=true;
}

function nodeTree(obj)  //操作节点树菜单
{
  var childNodes=obj.parentNode.parentNode.childNodes;
  if(childNodes.length>1)
    childNodes[0].getElementsByTagName("IMG")[0].src=(childNodes[1].style.display?icons["sub"]:icons["plus"]);
  for(var i=1; i<childNodes.length; i++)
    childNodes[i].style.display=(childNodes[i].style.display?"":"none");
}
</script>
</body>

</html>

⌨️ 快捷键说明

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