网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网页制作 > Javascript
网页制作:Dreamweaver教程,FrontPages教程,Javascript教程,HTML教程,CSS教程,心得技巧,DHTML教程,网页特效,Discuz!论坛
本月文章推荐
.冒泡算法的三种JavaScript表示.
.用javascript的正则表达式来验证.
.JavaScript[对象.属性]集锦、事件.
.js文件封装javascript在html中获.
.javascript 获取GET方法的参数.
.JavaScript学习笔记(2) 使用DO.
.JAVASCRIPT加密解密终级指南.
.内容拷贝增加版权信息的JavaScri.
.JavaScript打开EXCEL后,最后释放.
.JavaScript的9个陷阱及评点.
.javascript判断上传图片的大小和.
.javaScript通用数据类型校验.
.JavaScript的document和window对.
.显示客户端页面执行时间的代码.
.Javascript脚本实现静态网页加密.
.一种JavaScript的设计模式 .
.VBScript和JavaScript中的正则基.
.你是否理解JavaScript的执行顺序.
.javascript操作cookie.
.JavaScript中避免Form重复提交的.

使用JavaScript切换DOM元素显示状态方法

发表日期:2008-11-14


使用JavaScript切换DOM元素显示状态方法

显示document.getElementById('element').style.display = '';
隐藏document.getElementById('element').style.display ='none';

我们把上面的操作包装到函数中,这样使用起来更加快速,比如下面这段代码:

function toggle(obj) {
    var el = document.getElementById(obj);
    if ( el.style.display != 'none' ) {
        el.style.display = 'none';
    } else {
        el.style.display = '';
    }
}
这种方式很容易就实现了,但我们可以改进一下,使用三元条件运算符简化:

function toggle(obj) {
    var el = document.getElementById(obj);
    el.style.display = (el.style.display != 'none' ? 'none' : '' );
}

你听过$函数么?如果其他函数没有使用这个名称,我们可以借用一下!

我们的美元函数(和jQuery等框架里的$()基本相同)
function $() {
    var elements = new Array(); //用elements来得到所有参数
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string'){//可以使用constructor来判断
            element = document.getElementById(element);
        }
        if (arguments.length == 1){
            return element;
        }
        elements.push(element);
    }
    return elements;
}
切换函数的升级版
function toggle(obj) {
    var el = $(obj);
    el.style.display =(el.style.display != 'none' ? 'none' : '' );
}
好吧,现在这项工作已经变得很简洁了,但我们可以做的更漂亮么?为什么不呢。
我们现在还有个限制,就是只能切换一个对象的状态,让我们突破这个限制。


function toggle() {
    for ( var i=0; i < arguments.length; i++ ) {
        $(arguments[i]).style.display = ($(arguments[i]).style.display != 'none'? 'none' : '' );
    }
}
非常好,现在这段代码看起来已经非常养眼了(个人认为这段是最棒的)。
让我们在尝试一下,能不能显式的设置每个对象是显示还是隐藏。

var toggle = {
    show : function(obj) { document.getElementById(obj).style.display = ''; },
    hide : function(obj) { document.getElementById(obj).style.display = 'none'; }
};
好吧,问题来了,刚才定义的$函数怎么办呢,我们要把两种方式结合起来。

var toggle = {
    show : function(obj) { $(obj).style.display = ''; },
    hide : function(obj) { $(obj).style.display = 'none'; }
};
好吧,我们为什么不在参数的传递上更灵活一些呢,这样就可以同时操作更多的元素,这当然没问题!

var toggle = {
    show : function() {
        for ( i=0; i < arguments.length; i++ ) {  
            $(arguments[i]).style.display = '';
        }
    },
    hide : function() {
        for ( i=0; i < arguments.length; i++ ) {
            $(arguments[i]).style.display = 'none';
        }
    }
};
最后,我们终于实现了最初要求的效果了。
应该是从douban.com那里得来的.

上一篇:JavaScript与ActionScript通讯(ExternalInterface类) 人气:436
下一篇:JavaScript常用的2种定义类的方式 人气:574
浏览全部JavaScript的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐