源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

newxtree.js代码

  • 时间:2022-02-07 01:06 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:newxtree.js代码
/*=========================================         Powered by Fason         Email: fason_pfx@hotmail.com         HomePage:http://fason.nease.net         Version:3.0 =========================================*/ var TreeConfig = {     TreeIcon            :{         root                :'root.gif',         folderopen            :'folderopen.gif',         folder                :'folder.gif',         file                :'file.gif',         Rplus                :'Rplus.gif',         Rminus                :'Rminus.gif',         join                :'T.gif',         joinbottom            :'L.gif',         plus                :'Tplus.gif',         plusbottom            :'Lplus.gif',         minus                :'Tminus.gif',         minusbottom            :'Lminus.gif',         blank                :'blank.gif',         line                :'I.gif'     },     defaultText            :"New",     defaultHref            :"javascript:void(0)",     defaultTarget        :"_blank",     loadingText            :"Loading...",     unavaibleText        :"Unavaible",     useCookie            :true,     contextmenu            :null }; var TreeHandler = {     id                    :0,     all                    :{},     getId                :function (obj, key) {         var ID = key == null ? this.id :key;         this.all[ID] = obj;         return key==null ? this.id++ : key;     },     setImagePath        :function(sPath){         for (i in TreeConfig.TreeIcon) {             var tem = new Image();             tem.src = sPath + TreeConfig.TreeIcon[i];             TreeConfig.TreeIcon[i] = tem.src;         }     } }; //************* //    WebCookie //************* var WebCookie = new function () {     this.setValue = function (sName, sValue, sExpire, sPath, sDomain, sSecure) {         var cookie = sName + "=" + escape(sValue);         if (sExpire) cookie += "; expires=" + sExpire.toGMTString();         if (sPath) cookie += "; path=" + sPath;         if (sSecure) cookie += "; secure";         document.cookie = cookie;     };     this.getValue = function (sName) {         var c = document.cookie.split("; ");         for (var i=0; i<c.length; i++) {             var cItem = c[i].split("=");             if (cItem[0] == sName) return unescape(cItem[1]);         }         return null;     };     this.delCookie = function (sName) {         var cVal = this.getValue(sName);         if (cVal != null) {             var d = new Date();d.setTime(d.getTime()-1);             this.setValue(sName, cVal, d);         }     }; }; //************** // TreeNode //************** Array.prototype.Remove = function(o){     for (var i=0; i<this.length; i++) {         if (this[i] == o) break;     }     if (i != this.length) return this.slice(0,i).concat(this.slice(i+1,this.length));     return this; }; function TreeNode(sKey, sText, sHref, sTarget, sTitle, sIcon, sOpenIcon, sXMLSrc) {     this.id            = TreeHandler.getId(this, sKey);     this.level        = 0;     this.text        = sText ? sText : TreeConfig.defaultText;     this.href        = sHref ? sHref : TreeConfig.defaultHref;     this.target        = sHref ? (sTarget ? sTarget : TreeConfig.defaultTarget) : "_self";     this.title        = sTitle ? sTitle : this.text;     this.childNodes    = new Array();     this.parentNode    = null;     this.open        = TreeConfig.useCookie ? this.getOpen() : 0;     this.shown        = false;     this.icon        = sIcon;     this.openIcon    = sOpenIcon;     this.src        = sXMLSrc;     this._tree        = null;     this.onexpand    = null;     this.oncollapse    = null;     this.onselect    = null;     this.toElement();     if (sXMLSrc) {         this.open = 0;         this.loader = new this.constructor(null, TreeConfig.loadingText, null, null, null);         this.add(this.loader);     } }; TreeNode.prototype.toElement = function () {     var f = typeof(this.href) == "function";     var oThis = this;     this._item = document.createElement("div");     this._item.className = "TreeNode";     this._item.noWrap = true;     this._item.onselectstart = function(){ return false;}     this._handler = document.createElement("img");     this._handler.align = "absmiddle";     this._handler.onclick = function(){ oThis.toggle();};     this._item.appendChild(this._handler);     this._icon = document.createElement("img");     this._icon.align = "absmiddle";     //this._icon.onclick = function(){ oThis.select(true); };     this._icon.onclick = function(){ oThis.toggle(); };   //superj修改,单击图标为展开     this._icon.ondblclick = function(){ oThis.toggle(); };     this._item.appendChild(this._icon);     this._anchor = document.createElement("a");     this._anchor.className = "TreeNode-Anchor"     this._anchor.innerHTML = this.HTMLtoText(this.text);     this._anchor.target = f ? "_self" : this.target;     this._anchor.href = f ? TreeConfig.defaultHref : this.href;     this._anchor.title = this.title;     //this._anchor.onmousedown = function(e){ return oThis.contextMenu(e); };     this._anchor.onmousedown = function(){ oThis.toggle(); };   //superj修改,单击标签为展开     this._anchor.onfocus = function(){ oThis.focus(); }     this._anchor.onblur = function(){ oThis.blur(); };     this._anchor.onkeydown = function(e){ return oThis.KeyDown(e);}     this._item.appendChild(this._anchor);     this._container = document.createElement("div");     this._container.style.display = this.open ? "" : "none";     this._item.appendChild(this._container); }; TreeNode.prototype.HTMLtoText = function (s) {     return String(s).replace(/&/g, "&").replace(/\"/g, '"').replace(/</g,'<').replace(/>/g, '>'); }; TreeNode.prototype.isLast = function () {     var p = this.parentNode;     if (p == null) return false;     return p.childNodes[p.childNodes.length - 1] == this; }; TreeNode.prototype.indent = function () {     for (var i=0; i<this.childNodes.length; i++) { this.childNodes[i].indent(); }     var t = this._item, iv = this.level;     if (iv) while (--iv) { t.removeChild(t.firstChild); }     var node = this.parentNode, v = 0, _root = this.getRoot();     while (node) {         v++;         if (node == _root) break;         var m = document.createElement("img");         m.align = "absmiddle";         m.src = node.isLast() ? TreeConfig.TreeIcon.blank : TreeConfig.TreeIcon.line;         t.insertBefore(m, t.firstChild);         node = node.parentNode;     }     this.level = v; }; TreeNode.prototype.recalIndent = function (nLevel, b) {     for (var i = 0; i<this.childNodes.length; i++) {         this.childNodes[i]._item.childNodes[nLevel-1].src = b ? TreeConfig.TreeIcon.blank : TreeConfig.TreeIcon.line;         this.childNodes[i].recalIndent(nLevel, b);     } }; TreeNode.prototype.reloadIcon = function () {     var l = this.isLast(), o = this.open, m = TreeConfig.TreeIcon;     if (this.parentNode) {         this._handler.src = this.childNodes.length>0 ? (o ? (l ? m.minusbottom : m.minus) : (l ? m.plusbottom : m.plus)) : (l ? m.joinbottom : m.join);     }     this._icon.src = this.childNodes.length>0 ? (o ? (this.openIcon ? this.openIcon : (this.icon ? this.icon : m.folderopen)) : (this.icon ? this.icon : m.folder)) : (this.icon ? this.icon : m.file); }; TreeNode.prototype.addXMLNodeLoop = function (doc) {     var c = doc.childNodes;     for (var i = 0; i < c.length; i++) {         var o = c[i];         if (o.nodeType == 1) {             var X = this.constructor;             var node = new X(o.getAttribute("id"), o.getAttribute("text"), o.getAttribute("href"), o.getAttribute("target"), o.getAttribute("title"), o.getAttribute("icon"), o.getAttribute("openicon"), o.getAttribute('src'));             this.add(node);             if (!o.getAttribute("src")) {                 node.addXMLNodeLoop(o);             }         }     } }; TreeNode.prototype.XMLHttpCallBack = function () {     if (this._xmlhttp.readyState != 4) return;     var oLoad = this.loader;     var doc = this._xmlhttp.responseXML;     var sXML = String(this._xmlhttp.responseText).replace(/<\?xml[^\?]*\?>/i, "");     if (window.DOMParser) {         doc = (new DOMParser()).parseFromString(sXML, 'text/xml');         } else {         doc.loadXML(sXML);     }     if (doc.documentElement) {         var oRoot = doc.getElementsByTagName("Tree")[0];         if (oRoot.childNodes.length == 0) { this.setText(TreeConfig.unavaibleText); }         else {             var s = this._tree.getSelectedNode() == oLoad;             this.addXMLNodeLoop(oRoot);             oLoad.remove();             this.async();             this.loader = null;         }     }     else {         oLoad.setText(TreeConfig.unavaibleText);     } }; TreeNode.prototype.getXML = function () {     var oLoad = this.loader;     var oThis = this;     this._xmlhttp = null;     try{         if (window.XMLHttpRequest)              this._xmlhttp = new XMLHttpRequest();         else if (window.ActiveXObject)             this._xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");     }catch (e){}     if (this._xmlhttp == null) throw new Error('Your browser doesn\'t support!');     this._xmlhttp.onreadystatechange = function () { oThis.XMLHttpCallBack(); };     try {         var temp = (/\?/g.test(this.src)?"&":"?") + "temp=" + String(new Date().getTime())         this._xmlhttp.open("get", this.src + temp, true);         this._xmlhttp.send(null);     }catch(e){ oLoad.setText(TreeConfig.unavaibleText);} }; TreeNode.prototype.resetTree = function (oTree) {     for (var i=0; i<this.childNodes.length; i++)         this.childNodes[i].resetTree(oTree);     this._tree = oTree; }; TreeNode.prototype.setOpen = function (v) {     this.open = v;     if (TreeConfig.useCookie) {         WebCookie.setValue("o" + this.id, v);     } }; TreeNode.prototype.getOpen = function () {     var o = WebCookie.getValue("o" + this.id);     if (o != null)         return parseInt(o);     return 0; }; TreeNode.prototype.toHTML = function() {     var o = this._item;     this.indent();     this.reloadIcon();     if (this.parentNode == null) o.removeChild(this._handler);     return o; };     TreeNode.prototype.getRoot = function() {     var root = this;     while (root.parentNode) root = root.parentNode;     return root; };     TreeNode.prototype.setText = function(sText) {     this.text = sText;     this._anchor.innerHTML = this.HTMLtoText(sText); }; TreeNode.prototype.add = function(oItem) {     var tree = this._tree;     oItem.parentNode = this;     var len = this.childNodes.length;     this.childNodes[len] = oItem;     if (len > 0) {         var o = this.childNodes[len-1];         o.recalIndent(o.level, false);         o.reloadIcon();     } else if (tree) {         if (tree._rendered) this.open = 0;         this.reloadIcon();     }     if (tree) this.resetTree(tree);     this._container.style.display = this.open ? "" : "none";     this._container.appendChild(oItem.toHTML());     return oItem; }; TreeNode.prototype.remove = function(f) {     for (var i=0; i<this.childNodes.length; i++) { this.childNodes[i].remove(true); }     this.unselect();     var v = this.getPreviousSibling();     var p = this.parentNode;     if (p) {         p.childNodes = p.childNodes.Remove(this);         if (p.childNodes.length > 0) {             var node = p.childNodes[p.childNodes.length-1];             node.recalIndent(node.level, true);             node.reloadIcon();         } else {             p.setOpen(0);             p._container.style.display = "none";             p.reloadIcon();         }     }     var tmp = this._item;     if (tmp) tmp.parentNode.removeChild(tmp);     delete TreeConfig[this.id];     if (v && !f) v.select(false); }; TreeNode.prototype.toggle = function() {     if (this.childNodes.length>0) {         if (this.open) {             this.collapse();         }         else {             this.expand();         }     } }; TreeNode.prototype.expand = function() {     this.setOpen(1);     if (! this.shown) {         this.shown = true;         if (this.src) this.getXML();     }     this.reloadIcon();     this._container.style.display = "";     if (typeof this.onexpand == "function") {         this.onexpand();     } else {         eval(this.onexpand);     } }; TreeNode.prototype.collapse = function() {     this.setOpen(0);     this._container.style.display = "none";     this.reloadIcon();     this.select(false);     if (typeof this.oncollapse == "function") {         this.oncollapse();     } else {         eval(this.oncollapse);     } }; TreeNode.prototype.async = function () {     var a = this._tree.context;     if (!a.length) return;     var id = a[a.length - 1];     var node = TreeHandler.all[id];     if (typeof(node) != 'undefined') {         if (node.parentNode == this) {             this._.context = a.slice(0, -1);             if (node.childNodes.length > 0)                 node.expand();             else                  node.select();         }     } }; TreeNode.prototype.expandAll = function() {     if (this.childNodes.length>0 && !this.open) this.expand();     this.expandChildren(); }; TreeNode.prototype.collapseAll = function() {     this.collapseChildren();     if (this.childNodes.length>0 && this.open) this.collapse(); }; TreeNode.prototype.expandChildren = function() {     for (var i=0; i<this.childNodes.length; i++)         this.childNodes[i].expandAll(); }; TreeNode.prototype.collapseChildren = function() {     for (var i=0; i<this.childNodes.length; i++)         this.childNodes[i].collapseAll(); }; TreeNode.prototype.openURL = function() {     if (typeof this.href == "function") {         this.href();     } else if (this.href != TreeConfig.defaultHref) {         window.open(this.href, this.target);     } }; TreeNode.prototype.select = function(b){     this._anchor.focus();     if (b) {         this.openURL();     } }; TreeNode.prototype.unselect = function () {     this._anchor.className = "TreeNode-Anchor";     var selected = this._tree.getSelectedNode();     if (selected == this) this._tree.setSelectedNode(null); }; TreeNode.prototype.focus = function () {     var node = this._tree.getSelectedNode();     if (node && node != this) { node.unselect(); }     this._tree.setSelectedNode(this);     var oItem = this._anchor;     oItem.className =  "TreeNode-Anchor focus";     if (typeof this.onselect == "function") {         this.onselect();     } else {         eval(this.onselect);     } }; TreeNode.prototype.blur = function () {     var oItem = this._anchor;     oItem.className =  "TreeNode-Anchor selected"; }; TreeNode.prototype.contextMenu = function (e) {     e = e || window.event;     if (e.button == 2) {         if (typeof TreeConfig.contextmenu == "function")             TreeConfig.contextmenu();         return false;     }     return true; }; TreeNode.prototype.getFirstChild = function() {     if (this.childNodes.length>0 && this.open)         return this.childNodes[0];     return this; }; TreeNode.prototype.getLastChild = function() {     if (this.childNodes.length>0 && this.open)         return this.childNodes[this.childNodes.length-1].getLastChild();     return this; }; TreeNode.prototype.getPreviousSibling = function() {     if (!this.parentNode) return null;     for (var i=0;i<this.parentNode.childNodes.length;i++)         if (this.parentNode.childNodes[i] == this) break;     if (i == 0)          return this.parentNode;     else         return this.parentNode.childNodes[i-1].getLastChild(); }; TreeNode.prototype.getNextSibling = function() {     if (!this.parentNode) return null;     for (var i=0;i<this.parentNode.childNodes.length;i++)         if (this.parentNode.childNodes[i] == this)break;     if (i == this.parentNode.childNodes.length-1)         return this.parentNode.getNextSibling();     else         return this.parentNode.childNodes[i+1]; } TreeNode.prototype.KeyDown=function(e){     e = e || window.event;     var code = e.which || e.keyCode;     var o = this;     if (code == 37) {         if (this.open) this.collapse();         else {             if (this.parentNode) this.parentNode.select(false);         }         return false;     }     else if (code == 38) {         var el = o.getPreviousSibling();         if (el) el.select(false);         return false;     }     else if (code == 39) {         if (this.childNodes.length>0) {             if (!this.open) this.expand();             else {                 var el = o.getFirstChild();                 if(el) el.select(false);             }         }         return false;     }     else if (code == 40) {         if (this.open && this.childNodes.length>0) this.getFirstChild().select(false);         else {             var el = o.getNextSibling();             if (el) el.select(false);         }         return false;     }     else if (code == 13) {         this.toggle();         return true;     }     return true; }; function CheckBoxTreeNode(sKey, sName, sText, sHref, sTarget, sTitle, sIcon, sOpenIcon, sXMLSrc) {     this._base = TreeNode;     this._base(sKey, sText, sHref, sTarget, sTitle, sIcon, sOpenIcon, sXMLSrc);     this.name = sName;     this.checked = false; }; CheckBoxTreeNode.prototype = new TreeNode; CheckBoxTreeNode.prototype.toHTML = function () {     this._base = TreeNode.prototype.toHTML;     this._base();     var oThis = this;     this._checkbox = document.createElement("input");     this._checkbox.id = this._checkbox.name = this.name;     this._checkbox.type = "checkbox";     this._checkbox.defaultChecked = this.parentNode instanceof CheckBoxTreeNode ? this.parentNode.getChecked() : this.checked;     this._checkbox.onclick = function () { oThis.check() };     this._checkbox.hideFocus = true;     this._item.insertBefore(this._checkbox, this._icon);     return this._item; }; CheckBoxTreeNode.prototype.check = function () {     this.setCheckedChildren(this.getChecked());     this.setCheckedParent();     if (typeof this.oncheck == "function") {         this.oncheck();     } else {         eval(this.oncheck);     } }; CheckBoxTreeNode.prototype.setCheckedChildren = function (b) {     for (var i=0,j=0; i<this.childNodes.length; i++) {         if (this.childNodes[i] instanceof CheckBoxTreeNode)              this.childNodes[i].setCheckedChildren(b);     }      this._checkbox.checked = b; }; CheckBoxTreeNode.prototype.setCheckedParent = function () {     var p = this.parentNode;     if (p instanceof CheckBoxTreeNode) {         for (var i=0; i<p.childNodes.length; i++) {             if (!p.childNodes[i].getChecked()) break;         }         p._checkbox.checked = i == p.childNodes.length         p.setCheckedParent();     } }; CheckBoxTreeNode.prototype.getChecked = function () {     return this._checkbox.checked; }; //************ // TreeView //************ function TreeView(sKey, sText, sHref, sTarget, sTitle, sIcon, sOpenIcon, sXMLSrc) {     this.base = TreeNode;     this.base(sKey, sText, sHref, sTarget, sTitle, sIcon, sOpenIcon, sXMLSrc);     this.icon = sIcon || TreeConfig.TreeIcon.root;     this.context = new Array();     this._rendered = false;     this._tree = this; }; TreeView.prototype = new TreeNode; TreeView.prototype.getSelectedNode = function () {     if (window.selectedNode) return window.selectedNode;     return null; }; TreeView.prototype.setSelectedNode = function (oNode) {     window.selectedNode = oNode; }; TreeView.prototype.setContext = function () {     this.context = new Array();     for (var i=arguments.length-1,j=0; i>=0; i--,j++) {         this.context[j] = arguments[i];     } }; TreeView.prototype.create = function (oTarget) {     oTarget.appendChild(this.toHTML());     this._rendered = true;     if (this.childNodes.length>0 || this.open || this.src)          this.expand(); }; TreeView.prototype.toString = function () {     var obj = this.toHTML();     var o = document.createElement("div");     o.appendChild(obj);     this._rendered = true;     return o.innerHTML; };
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部