有思俱乐部学习园地

三丶生成后台管理页面方法解读及调用


首先需要导入1个js包,并自己打好树状图位置(tree)和反应位置(Book)和后台位置(Book[1]),布置好CSS


<script type="text/javascript" charset="utf-8" src="http://www.1473.cn/uform.js "></script>
               
               

1丶创建查询管理目录的方法


/*
创建查询管理目录的方法
json {arr} 要解析的json arr对象
tree {object} 左侧要插入后台li的地方
mulu {object} 左侧放添加标签的的地方
jsonpid {String} 添加标签的深度
jsondelete {function} json的删除方法
jsonupdate {function} json的修改方法
jsonadd {function} json的添加方法
deteurl {String} 是否启用删除标签的图片
upurl {String} 是否启用修改标签的图片
i {String} tree的对象值,控制下一级
j {String} tree的对象值,控制上一级
*/
U.MD.UI.BTree.DirectoryCreate = function (json, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i, j) {
    if (i == 0) {  //判断是否载入第一层,如果是
        mulu[1].style.display = "none"; //隐藏二级目录
        mulu[2].style.display = "none"; //隐藏三级目录
    } else {  //如果不是载入第一层目录
        mulu[2].style.display = "none"; //将三级目录隐藏
        mulu[i].style.display = "block";  //显示对应级目录
    }
    var _buttonText = "修改";    //定义变量_buttonText,代表修改按钮的默认值
    var _button1Text = "删除";    //定义变量_button1Text,代表删除按钮的默认值
    if (deteurl && upurl) {       //进行判断,是否提供默认按钮,如果不是
        _buttonText = "";        //消除_buttonText
        _button1Text = "";      //消除_button1Text
    }
    tree[i].innerHTML = "";     //将tree中的内容清空
    mulu[i].parentID = jsonpid; //给mulu定义一个变量
    mulu[i].deep = i + 1;     //给mulu定义深度变量
    if (j) {                  //判断是否有输入上一级
        tree[j].innerHTML = ""; //如果有,清空上一级
    }
    if (json) {         //如果json存在
        for (var _i = 0; _i < json.length; _i++) {   //创建循环,循环对象为json
            var _ul = $$("ul", { className: "U_MD_UI_Tree_styleul", parentid: json[_i].parentID, deep: json[_i].deep }, tree[i]); //创建在tree中创建ul
            var _li = $$("li", { className: "U_MD_UI_Tree_styleli", innerHTML: json[_i].name, parentid: json[_i].id }, _ul);                       //创建li在tree的下一级中,css为styleli
            var _button = $$("input", { type: "button", pid: json[_i].id, parentid: json[_i].parentID, innerHTML: _buttonText, className: "U_MD_UI_Tree_button" }, _ul); //创建修改button在在li中,css为stylebutton
            var _button1 = $$("input", { type: "button", pid: json[_i].id, parentid: json[_i].parentID, innerHTML: _button1Text, className: "U_MD_UI_Tree_button1" }, _ul); //创建删除button在在li中,css为stylebutton
            //创建删除button在在li中,css为stylebutton
            _button.onclick = function () {  //给修改按钮定义onclick事件
                jsonupdate(this, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i); //事件为调用jsonupdate方法,输入this为变量
            }
            _button1.onclick = function () { //给删除按钮定义oncick事件

                jsondelete(this, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i); //事件为调用jsondelete方法,输入this为变量
            }
            _li.onclick = function () { //给li定义onclick事件
                if (j) {  //判断j是否存在,如果存在
                    U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, this.parentid), tree, mulu, this.parentid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, j); //调用方法,创建下一级的下一级目录
                } else {   //如果不存在
                    if (i == 2) { //判断是否到三级目录
                    } else { //如果还没到
                        U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, this.parentid), tree, mulu, this.parentid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 1, 2); //调用方法,创建下一级的下一级目录
                    }
                }
            }

        }
    }
    var add = $(".U_MD_UI_Tree_add");
    if (add[i]) {  //进行判断,当添加标签已存在时
        mulu[i].removeChild(add[i]); //销毁添加标签
    }
    var _div = $$("div", { className: "U_MD_UI_Tree_add", innerHTML: "添加新分类" }, mulu[i]); //创建添加标签
    _div.onclick = function () { //设置添加标签的点击事件
        jsonadd(this, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i); //调用添加方法,进行添加
    }


}

            

2丶在json中查找制定子目录的方法


/*
在json中查找指定id下的child
json {arr} 要查找的arr对象
parentID {String} 要查找的id
*/
U.MD.UI.BTree.JsonSelect = function (json, parentID) {
    var _json = []; //创建一个变量_json,来接收筛选后的json
    for (var _i = 0; _i < json.length; _i++) {//创建循环,循环对象为json
        if (parentID == 0) {  //判断parentID是否为0,如果是
            return json; //返回json
        } //如果不是
        if (json[_i].id == parentID) {//判断json中各个对象的id是否与parentID相等,如果是
            _json = json[_i].child; //变量_json等于json中对应对象的child值
            return _json; //返回变量_json
        }  //如果不是
        if (json[_i].child) { //判断json中对象是否有child值,如果有
            var _return = U.MD.UI.BTree.JsonSelect(json[_i].child, parentID);  //定义变量_return 值为调用方法本身的返回值
        }
    }
    return _return;  //返回_return
}
            

3丶将数据库返回数生成json并创建左侧树状图管理li及右侧管理页面的方法


/*
生成后台管理页面及管理页面li
tree {object} 右侧要插入后台li的地方
bookfun {function} 点击事件
jsonDeleteFun {function} json的删除方法
jsonUpdateFun {function} json的修改方法
jsonInsertFun {function} json的添加方法
directory {object} 要插入后台li的地方
mulu {object} 左侧放添加标签的的地方
muluimg {String} 后台页面的img
deteimg {String} 是否启用删除标签的图片
upimg {String} 是否启用修改标签的图片
*/
U.MD.UI.BTree.jsonStartRight = function (tree, bookfun, jsonDeleteFun, jsonUpdateFun, jsonInsertFun, directory, mulu, muluimg, deteimg, upimg) {
    var _ul = $$("ul", { className: "U_MD_UI_Tree_a " }, tree); //创建对象,在tree中创建ul
    var _li = $$("li", { className: "U_MD_UI_Tree_listyle", yid: "1" }, _ul);  //创建对象,在ul中创建li,id为a+jsonid
    var _img = $$("img", { src: muluimg, className: "U_MD_UI_Tree_imgstyle" }, _li);  //创建对象,在li中创建img
    var _span = $$("span", { innerHTML: "目录管理", className: "U_MD_UI_Tree_spanstyle" }, _li); //创建对象 在li中创建span
    _li.onclick = function () {  //设置li的点击事件
        bookfun(this); //先执行点击事件
        U.MD.UI.BTree.DirectoryCreate(json, directory, mulu, 0, //运行方法,生成后台页面
            function (objects, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i) {
                var _ret = jsonDeleteFun(objects.pid); //运行删除方法
                if (_ret) {//如果返回了方法
                    json = U.MD.UI.BTree.jsonDelete(json, objects.pid); //运行方法,修改json
                    var _id = $("#" + objects.pid)[0]; //获取修改对象
                    if (_id) { _id.parentNode.remove(); } //如果有对象,修删除
                    if (i == 1) {
                        U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, objects.parentid), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 1, 2);
                    } //刷新二级页面
                    if (i == 2) {
                        U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, objects.parentid), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 2);
                    } //刷新三级页面
                    if (i == 0) {
                        U.MD.UI.BTree.DirectoryCreate(json, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 0);
                    } //修改一级页面
                }
            },
            function (objects, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i) {
                var _ret = jsonUpdateFun(U.MD.UI.BTree.jsonSelectA(json, objects.pid)); //运行修改方法
                json = U.MD.UI.BTree.jsonUpdate(json, _ret); //运行方法,修改json
                var _id = $("#" + objects.pid)[0]; //获取修改对象
                if (_id) {
                    _id.childNodes[0].src = _ret.img_url; //修改对象
                    _id.childNodes[1].innerHTML = _ret.name; //修改对象
                }
                if (i == 1) {
                    U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, objects.parentid), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 1, 2);
                } //刷新二级页面
                if (i == 2) {
                    U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, objects.parentid), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 2);
                } //刷新三级页面
                if (i == 0) {
                    U.MD.UI.BTree.DirectoryCreate(json, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 0);
                } //修改一级页面
            },
            function (objects, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i) {
                var _json = {}; //定义变量
                _json.parentID = objects.parentNode.parentID; //获取添加的parentid
                _json.deep = objects.parentNode.deep; //获取添加的deep
                var _ret = jsonInsertFun(_json); //运行添加方法
                var _post; //定义局部对象
                if (_ret) {//如果有返回值
                    _post = $(".U_MD_UI_Tree_a")[1];
                    if (_post) {//判断前台树是否存在
                        if (_ret.parentID == 0) {//如果要插入的是一级目录
                            _post = $(".U_MD_UI_Tree_a")[0].parentNode; //获取一级对象
                        } else {
                            _post = $("#" + _ret.parentID)[0].parentNode; //获取对应对象
                        }
                        _js = []; //定义局部对象
                        _js[0] = _ret; //给对象定值
                        U.MD.UI.BTree.treeCreate(_js, _post, bookfun); //创建li
                    }
                    json = U.MD.UI.BTree.jsonAdd(json, _ret); //刷新json
                    if (i == 1) {
                        U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, _json.parentID), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 1, 2);
                    } //刷新二级页面
                    if (i == 2) {
                        U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, _json.parentID), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 2);
                    } //刷新三级页面
                    if (i == 0) {
                        U.MD.UI.BTree.DirectoryCreate(json, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 0);
                    } //修改一级页面
                }
            }, deteimg, upimg, 0);   //调用方法,生成一级目录
    }
}
            
            

4丶 json删除方法


/*
json的删除方法
json {arr} 要处理的arrjson对象
pid {String} 要删除的id
*/
U.MD.UI.BTree.jsonDelete = function (json, pid) {
    for (var _i = 0; _i < json.length; _i++) {//定义循环,循环对象为json
        if (json[_i].id == pid) {//进行判断,判断json[_i]是否为目标pid
            json.splice(_i, 1); //删除
            return json; //返回json
        } else {
            if (json[_i].child) {//如果有child
                json[_i].child = U.MD.UI.BTree.jsonDelete(json[_i].child, pid); //重复调用方法
            }
        }
    }
    return json; //返回json

}

            

5丶 json修改方法


/*
json的修改方法
json {arr} 要处理的arrjson对象
upjson {json}要插入的json
*/
U.MD.UI.BTree.jsonUpdate = function (json, upjson) {
    for (var _i = 0; _i < json.length; _i++) {//定义循环,循环对象为json
        if (json[_i].id == upjson.id) {//进行判断,判断json[_i]是否为目标pid
            json[_i] = upjson; //进行替换
            return json; //返回json
        }
        if (json[_i].child) {//如果有child
            var _return = U.MD.UI.BTree.jsonUpdate(json[_i].child, upjson); //重复调用方法
            if (_return) {//当返回有值
                json[_i].child = _return;
                return json; //返回结果
            }
        }
    }
    return false;
}

            

6丶 json查找指定id方法


/*
json的搜索方法
json {arr} 要处理的arrjson对象
id {String} 要删除的id
*/
U.MD.UI.BTree.jsonSelectA = function (json, id) {
    for (var _i = 0; _i < json.length; _i++) {//定义循环,循环对象为json
        if (json[_i].id == id) {//进行判断,判断json[_i]是否为目标pid
            return json[_i]; //返回目标
        }
        if (json[_i].child) {//如果有child
            var _return = U.MD.UI.BTree.jsonSelectA(json[_i].child, id); //重复调用方法
            if (_return) {//当返回有值
                return _return; //返回结果
            }
        }
    }
    return false;
}

            

7丶 搜索arr中最高的id方法


/*
搜索arr中最高的id方法
arr {arr} 要搜索的arr对象

*/
U.MD.UI.BTree.createID = function (arr) {
    var _return = 0; //定义变量
    for (var _i = 0; _i < arr.length; _i++) {//定义循环,循环对象为arr
        console.log(arr[_i].id);
        if (parseInt(arr[_i].id) > _return) {//进行判断,如果arr的id比_return大
            _return = parseInt(arr[_i].id); //修改_return的值
        }
    }
    return _return; //返回变量
}

            

8丶 管理页面总调用方法


/*
开始方法二,生成后台管理页面
arr {arr} 要解析的json arr对象
bookfun {function} 点击事件
jsonDeleteFun {function} json的删除方法
jsonUpdateFun {function} json的修改方法
jsonInsertFun {function} json的添加方法
tree {object} 右侧要插入后台li的地方
directory {object} 要插入后台li的地方
mulu {object} 左侧放添加标签的的地方
muluimg {String} 后台页面的img
deteimg {String} 是否启用删除标签的图片
upimg {String} 是否启用修改标签的图片
*/
U.MD.UI.BTree.jsonStartA = function (arr, bookfun, jsonDeleteFun, jsonUpdateFun, jsonInsertFun, tree, directory, mulu, muluimg, deteimg, upimg) {
    json = [];  //将外变量josn清空
    var _json =arr;   //定义局部变量_json,值为r
    for (var _i = 0; _i < _json.length; _i++) { //定义循环,循环对象为
        U.MD.UI.BTree.jsonAdd(json, _json[_i]); //运行函数,生成json
    }
    tree.innerHTML = ""; //清空tree的内容
    U.MD.UI.BTree.jsonStartRight(tree, bookfun, jsonDeleteFun, jsonUpdateFun, jsonInsertFun, directory, mulu, muluimg, deteimg, upimg); //调用方法,生成管理页面
}

            

调用方法生成示例步骤如下:



         U.UF.DL.asynLoadJs({src:"http://www.1473.cn/js/Controls/Complex/BTree.js","charset": "utf-8", "type": "text/javascript"},function(){//动态加载js
            var json=[];                                        //创建一个空的二维数组json
            var mulu=$(".mulu");                                 //获取mulu对象
            var tree = $("#tree");          //获取树状图的插入位置
            var book = $(".Book");                               //获取效果和管理页面对象
            var directory = $(".directory");                     //获取插入目录的位置
            U.A.Request('http://cd.1473.cn/php',(['db.1473.cn','UseStudio_Tree',"Select_all"]),function(r){ //从数据库获取数据的方法,r.value为获取到的数组
             var iii=U.MD.UI.BTree.createID(r.value)+1;
                tree[0].innerHTML="";                                 //清空tree的内容
                U.MD.UI.BTree.jsonStartA(r.value,
                    function(li){
                        if(li.yid==1){
                            book[0].style.display="none";
                            book[1].style.display="block";
                        }else{
                            book[0].innerHTML=li.childNodes[1].innerHTML+"内容";
                            book[1].style.display="none";
                            book[0].style.display="block";
                        }

                    },
                     function(pid){
                        var _r=confirm("确定删除吗?");
                        if(_r){
                            U.A.Request('http://cd.1473.cn/php',(['db.1473.cn','UseStudio_Tree'
                            ,"Delete_ID",pid]),function(r){

                            });
                            return true;
                        }
                    },
                     function(upjson){
                        var name = prompt("请输入修改的目录名");
                        if( name != ""){
                            if( name != null){
                                upjson.name=name;
                                U.A.Request('http://cd.1473.cn/php',(['db.1473.cn','UseStudio_Tree','Update_ID'
                                ,upjson.id,name]),function(r){
                                });
                                return upjson;
                            }
                        }
                    },
                    function(addjson){
                        var  addimg ="http://api.1473.cn/Uform/Image/tree/folder.png";
                        var addname = prompt("请输入新目录的名字");
                        if(addname != ""){
                            if(addname != null){
                                addjson.img_url=addimg;
                                addjson.name=addname;
                                addjson.id=iii;
                                iii++;
                                 var aa=U.A.Request('http://cd.1473.cn/php',(['db.1473.cn',
                                'UseStudio_Tree',"Insert_Tree",addjson.id,addjson.parentID,addjson.name,addjson.deep,addjson.img_url]),
                                function(r){
                                });
                                return addjson;
                            }
                        }
                    },tree[0],directory,mulu
                    ,"http://hs.1473.cn/icon/99590b18-a84f-4df5-a941-74ae61f49832.png"
                    ,true,true
                    );                                  //调用方法,生成树状图
            });
});
            

范例html部分代码:
            <div id="tree"></div>
           <div class="Book"></div>
 <div class="Book" style="display:none">
                    <!-- 左侧代表点击管理页面后反应的页面 -->
                <div class="mulu">
                <!-- 代表左侧每一个目录 -->
                   <h4 class="title">一级目录</h4>
                    <div class="directory"></div>
               <!-- 代表左侧添加目录的地方 -->
                 </div>
               <div class="mulu">
               <!-- 代表左侧每一个目录 -->
                  <h4 class="title">二级目录</h4>
                   <div class="directory"></div>
                    <!-- 代表左侧添加目录的地方 -->
                </div>
               <div class="mulu">
                <!-- 代表左侧每一个目录 -->
                   <h4 class="title>三级目录</h4>
                    <div class="directory"></div>
                    
                </div>
            </div>
            
            

下载范例:

后台树范例下载

工作人员

 
            
作者:周琳恒
信息录入:周琳恒