TreeTable의 간단한 실현
Department EmployeeID position
Dept4 - -
fanggw c3025 MASTER
team1 - -
zhanghy c3268 SE
chenf c3401 SE
상기 데이터 원본 구조에 따라 이 테이블을 두루 훑어보고 데이터를 읽고 전체 트리의 데이터 모델을 구축한 다음에 전체 트리의 보기(node와leaf의 디스플레이는 css 스타일로 정의되어 있어 수정하기 편리하며 필요할 때 외부 코드로 지정)와 관련 노드의 클릭 처리 프로그램을 초기화합니다.다음은 주요 구현 코드입니다.
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
var Node = Class.create();
Node.prototype = {
initialize: function(link, level, type) {
this.name = link.innerText;
this.id;
this.link = link;
this.type = type;
this.level = level;
this.isOpen = true;
this.isClicked = false;
this.root;
this.img; //clicked img's path
this.parent;
this.children = new Array();
this.getChildren();
},
getChildren: function() {
if (this.type == "node") {
//alert(this.link.innerText);
var dataRows = document.getElementById("treeGrid").getElementsByTagName("TBODY")[0].getElementsByTagName("TR");
var pushFlag = false;
for(var j=0; j0; lvl--) {
var indentImg = document.createElement("img");
//get parent node by level
var parentNode = this.parent;
for (var i=1; i 0) {
if (this.getNext()) {
path = "./images/Tminus.gif";
} else {
path = "./images/Lminus.gif";
}
}
else {
if (this.getNext()) {
path = "./images/T.gif";
} else {
path = "./images/L.gif";
}
}
}
} else {
if (this.getNext()) {
path = "./images/T.gif";
}
else {
path = "./images/L.gif";
}
}
img.src = path;
img.align = "absbottom";
//set cursor pointer style to the minus/plus img
img.style.cursor = "pointer"
this.img = img;
img.onclick = expand;
oFragment.appendChild(img);
oFragment.appendChild(this.link);
var div = document.createElement("div");
div.setAttribute("id", this.id);
/* div css class set by type */
div.className = (this.type=="node")?"node":"leaf";
/* all node is margin to left by 10 pixel except root */
if (this.level > 0) {
div.style.marginLeft = "10px";
}
div.appendChild(oFragment);
return div;
}
}
/* global variable */
//tree root
var root;
//all nodes of the tree
var nodes = new Array();
/* initialize the whole tree grid */
function initTreeGrid() {
//dataRows is the datasource of the tree
var dataRows = document.getElementById("treeGrid").getElementsByTagName("TBODY")[0].getElementsByTagName("TR");
//find the root of the tree
for (var i=0; i 0) {
initNodes(node.children[j]);
}
}
}
/* expand row elements by isOpen flag */
function expand() {
var currentDivId = event.srcElement.parentNode.id;
var currentNode;
//get the clicked node
for(var i=0; i
이 구성 요소는 IE6+, Firefox에서 테스트를 통과했습니다.관심 있는 친구는 나에게 연락해서 진일보한 개선과 확장을 진행할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.