`

我的menu

 
阅读更多
function Menu() {
    this.tbarH = 28;
    this.bbarH = 28;
    this.barH = 25;
    this.container;
    if (!arguments[0]) {
        alert("\u8bf7\u5728\u521b\u5efa\u83dc\u5355\u65f6\u6307\u5b9a\u83dc\u5355\u7684\u5bb9\u5668");
        return;
    }
    if (typeof (arguments[0]) == "string") {
        this.container = document.getElementById(arguments[0]);
    } else {
        this.container = arguments[0];
    }
    var tbar = document.createElement("div");
    tbar.style.cssText = "border:1px solid #eee;background:#3586BD url(images/bar.png) repeat-x;color:#fff;line-height:2;height:" + this.tbarH + "px";
    tbar.innerHTML = "\u7cfb\u7edf\u83dc\u5355";
    var bbar = document.createElement("div");
    bbar.style.cssText = "border:1px solid #eee;background:#3586BD url(images/bar.png) repeat-x;height:" + this.bbarH + "px";
    var c = document.createElement("div");
    c.style.height = this.container.offsetHeight ? this.container.offsetHeight : "100%";
    c.style.border = "1px solid #999";
    c.appendChild(tbar);
    var body = document.createElement("div");
    body.style.borderTop = "1px solid #999";
    body.style.borderBottom = "1px solid #999";
    body.style.backgroundColor = "lightyellow";
    body.style.height = parseInt(this.container.offsetHeight) - this.tbarH - this.bbarH - 6 + "px";
    c.appendChild(body);
    c.appendChild(bbar);
    this.container.appendChild(c);
    this.body = body;
    this.ibids = [];
}
Menu.prototype.add = function (id, pid, name, href, icon) {
    if (this.container) {
        if (pid == 0) {
            var item = document.createElement("div");
            item.setAttribute("id", "item" + id);
            var itemhead = document.createElement("div");
            itemhead.setAttribute("id", "itemhead" + id);
            itemhead.style.cssText = "border-style:solid;border-color:#eee;border-width:0 1px 1px 1px;background:#3586BD url(images/bar.png) repeat-x;line-height:25px;text-align:center;color:#fff;height:" + this.barH + "px";
            itemhead.innerHTML = name;
            var ibids = this.ibids;
            var bd = this.body;
            var bh = this.barH;
            itemhead.onclick = function (e) {
                var el = e ? e.target : event.srcElement;
                var temp = el.id.substring(8);
                for (var k = 0; k < ibids.length; k++) {
                    if (ibids[k] == temp) {
                        var ib = document.getElementById("itembody" + ibids[k]);
                        ib.style.display = "block";
                        ib.style.height = parseInt(bd.style.height) - ibids.length * (bh + 1);
                    } else {
                        document.getElementById("itembody" + ibids[k]).style.display = "none";
                    }
                }
            };
            item.appendChild(itemhead);
            var itembody = document.createElement("div");
            itembody.setAttribute("id", "itembody" + id);
            itembody.style.cssText = "border-style:solid;border-color:#eee;border-width:0 1px 1px 1px;text-align:center;display:none";
            item.appendChild(itembody);
            this.ibids.push(id);
            this.body.appendChild(item);
        } else {
            var item = document.createElement("div");
            item.setAttribute("id", "item" + id);
            item.setAttribute("pid", pid);
            item.setAttribute("text", name);
            item.setAttribute("href", href);
            item.style.cssText = "border-style:solid;border-color:#999;border-width:0;text-align:center;line-height:25px;cursor:pointer;";
            item.innerHTML = name;
            var menu = this;
            item.onclick = function (e) {
                var el = e ? e.target : event.srcElement;
                if(menu.callback){
                    menu.callback(el);
                }
            };
            var ib = document.getElementById("itembody" + pid);
            ib.appendChild(item);
        }
    }
};
Menu.prototype.init = function (fn) {
    var index = 0;
    var firstib = document.getElementById("itembody" + this.ibids[index]);
    firstib.style.display = "block";
    firstib.style.height = parseInt(this.body.style.height) - this.ibids.length * (this.barH + 1);
    this.callback = fn;
};
Menu.prototype.load = function (url, params, fn) {
    var menu = this;
    function kk(res) {
        var ret = eval("(" + res.responseText + ")");
        for (var k in ret) {
            menu.add(ret[k].id, ret[k].pid, ret[k].name, ret[k].href, ret[k].icon);
        }
        var index = 0;
        var firstib = document.getElementById("itembody" + menu.ibids[index]);
        firstib.style.display = "block";
        firstib.style.height = parseInt(menu.body.style.height) - menu.ibids.length * (menu.barH + 1);
        menu.callback = fn;
    };
    Ajax(url, params, kk);
};
var Ajax = function (url, params, callback) {
    var reqError = "\u54cd\u5e94\u5f02\u5e38\uff01\uff01\uff01";
    var sendData = null;
    var createXHR = function () {
        var XHR;
        if (window.XMLHttpRequest) {
            XHR = new XMLHttpRequest();
        } else {
            if (window.ActiveXObject) {
                try {
                    XHR = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e) {
                    try {
                        XHR = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {
                    }
                }
            }
        }
        return XHR;
    };
    var processParams = function () {
        var ret = "";
        for (var p in params) {
            ret += "&";
            ret += p + "=" + params[p];
        }
        ret = ret.substring(1);
        return ret;
    };
    var method = (url.indexOf("?") == -1) ? "POST" : "GET";
    if (params && typeof (params) == "object") {
        if (typeof (params) == "object") {
            if (method == "GET") {
                url += "&" + processParams();
            } else {
                sendData = processParams();
            }
        }
        if (typeof (params) == "string") {
            if (method == "GET") {
                url += "&" + params;
            } else {
                sendData = params;
            }
        }
    }
    var xhr = createXHR();
    xhr.open(method, url, true);
    if (method == "POST") {
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    }
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                if (callback) {
                    callback(xhr);
                }
            } else {
                window.alert(reqError);
            }
        }
    };
    xhr.send(sendData);
};

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    ICONMENU iconmenu

    《深入理解ICONMENU:菜单与图标重绘的艺术》 在软件设计中,用户界面(UI)是至关重要的元素,其中菜单和图标的呈现方式直接影响到用户的交互体验。"ICONMENU"是一个专注于图标菜单重绘的技术概念,它旨在通过优化...

    NavMenu菜单控件

    【NavMenu菜单控件】是一种在用户界面设计中常见的组件,尤其在Web应用程序和桌面应用程序中,用于提供清晰的导航结构。它以一种有组织的方式显示应用的主要功能或页面,帮助用户快速访问所需内容。这款控件因其美观...

    Android自定义menu的实现

    在Android开发中,Menu通常用于显示应用程序中的操作选项,如在顶部栏或下拉菜单中。自定义Menu允许开发者根据应用需求设计独特的交互方式和视觉样式。本篇将深入探讨如何在Android中实现自定义Menu。 首先,我们...

    Access Menu By Name(TCL)

    Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access Menu By Name(TCL)Access ...

    android menu菜单距中显示

    在Android应用开发中,`Menu`是用户界面中不可或缺的一部分,它通常用于在特定操作(如选项、更多操作)上为用户提供快捷访问的途径。在Android系统中,`Menu`通常出现在活动(Activity)的顶部作为选项菜单,或者在...

    menu.c32.zip

    这个问题通常与启动加载器(boot loader)相关,而`menu.c32`文件就是这个关键组件。 `menu.c32` 是一个名为“菜单加载器”的COM32格式程序,它是GRUB2(Grand Unified Bootloader 2)的一个组成部分,用于提供图形...

    StrutsMenu使用笔记

    在探讨《StrutsMenu使用笔记》这一主题时,我们深入解析了StrutsMenu框架的集成与配置过程,以及如何在Web应用中有效利用其提供的菜单功能。以下是对该主题核心知识点的详细阐述: ### StrutsMenu简介 StrutsMenu...

    iStat Menu 6.0.0 含注册码

    iStat Menu 6.0含注册码,iStat Menu 含注册码,iStat Menu 含注册码,iStat Menu 含注册码,iStat Menu 含注册码,iStat Menu 含注册码,iStat Menu 含注册码,

    element 中 el-menu 组件的无限极循环思路代码详解

    &lt;recursive-menu v-if="menu.childList && menu.childList.length" :menu="menu.childList" /&gt; &lt;/el-menu-item&gt; ` }); ``` 在这个组件中,`menu` 属性接收外部传递的单个菜单数据,若该菜单项拥有子菜单(即 `...

    jquery下拉菜单插件SelectMenu

    **jQuery下拉菜单插件SelectMenu详解** 在网页开发中,下拉菜单是常见的交互元素,用于提供多种选择项供用户进行操作。`SelectMenu.js` 是一款基于 jQuery 的高效下拉菜单插件,它提供了丰富的特性,使开发者能够...

    main_menu.xml菜单汉化文件

    "main_menu.xml"就是MySQLWorkbench菜单汉化的核心文件,它包含了所有菜单项的文本和对应的操作命令。 `main_menu.xml` 文件是XML格式的,XML是一种标记语言,用于描述数据结构和内容。在MySQLWorkbench中,这个...

    DropDownMenu下拉菜单改进版

    《DropDownMenu下拉菜单改进版:打造优雅的代码体验》 在软件开发中,用户界面的设计与交互至关重要,其中下拉菜单(DropDownMenu)作为常见的交互元素,被广泛应用于各种应用和网页中。一个设计得当且易于使用的...

    小程序-dropdownmenu

    在微信小程序的开发中,`dropdownmenu`是一个非常实用的组件,它用于实现下拉菜单功能,能够为用户提供丰富的交互体验。本篇文章将深入探讨如何在小程序中使用`dropdownmenu`,并分享相关的开发技巧。 首先,我们来...

    DropDownMenu下拉菜单

    《DropDownMenu下拉菜单:实现优雅的交互设计》 在软件开发中,用户界面的设计至关重要,其中下拉菜单(DropDownMenu)是一种常见的交互元素,它能够有效地节省屏幕空间,同时提供丰富的选择项,使得用户操作更为...

    Android MenuDemo Menu全面讲解

    在Android开发中,Menu是一个非常重要的组件,它用于在应用程序的不同场景中展示用户可操作的选项,如在活动(Activity)的顶部或者下拉菜单中。`MenuDemo`就是一个专门用来详细讲解Android Menu用法的示例项目。...

    XML Menu

    在HV Menu基础上,改进成读取xml文件的...)" background="" height="20" width="68"&gt;&lt;/menu&gt; &lt;/menu&gt; &lt;menu name="收藏夹" link="" background="" height="20" width="68"&gt; &lt;menu name="Google" link=...

    Win10开始菜单修复工具Windows 10 Start Menu TroubleShooter下载

    Start Menu does not open or not working in Windows 10 Win10开始菜单修复工具Windows 10 Start Menu TroubleShooter下载 这个微软官方Win10开始菜单修复工具是一个单文件的大小只有398KB的小工具,文件名为start...

    点击text弹出Menu

    getMenuInflater().inflate(R.menu.menu_text, menu); return true; } ``` 5. **处理菜单项的点击事件**:最后,需要重写`onOptionsItemSelected`来处理用户选择菜单项时的事件: ```java @Override public ...

    Android提高十八篇之自定义Menu(TabMenu)

    在Android开发中,自定义Menu和TabMenu是提升用户体验、个性化应用界面的重要手段。这篇“Android提高十八篇之自定义Menu(TabMenu)”的主题聚焦于如何在Android应用中创建和定制化自己的菜单栏和标签页功能。下面...

    menu_listbox控件

    在MiniGUI中,“menu_listbox”是一个常见的控件类型,它结合了菜单(menu)和列表框(listbox)的功能,能够为用户提供丰富的交互体验。本文将详细介绍如何使用MiniGUI库来创建和操作这个控件,以供C语言初学者学习...

Global site tag (gtag.js) - Google Analytics