Loading....

HEAD

  • 有一种精神,叫"公诚勤朴"

挣点外快

JavaScript List Class
作者: wzhu 时间: 2008-10-15 16:21:12

以前写的一个可以左右移动JavaScript List, 删除,添加,修改列表值.程序比较简单, 以后有时间再慢慢优化, 先发上来,演示效果如下


文本:
数值:


主要Javascript代码如下

/**
===========================================================
    list.js
    Author:    wzhu
    Email:    wzhu.email#gmail.com
    First    2007/08/28
    Modify    
    Last    

    Copyright © 2006-2008
    China. All Rights Reserved.

===========================================================
*/
//<![CDATA[
function List()
{
    this.m_OL;

    this.setObjectById = function(id){
        this.m_OL = document.getElementById(id);
    }

    this.addOption = function( txt, val ){
        if( txt instanceof Array &&
            val instanceof Array &&
            txt.length == val.length )
        {            
            for( var i = 0; i < txt.length; i++){
                var o = document.createElement("option");
                var t = document.createTextNode(txt[i]);
                o.setAttribute("value", val[i]);
                o.appendChild(t);
                this.m_OL.appendChild(o);
            }
        }else if( txt.trim() != "" && val.trim() != ""){
            var o = document.createElement("option");
            var oc = document.createTextNode(txt);
            o.setAttribute("value", val);
            o.appendChild(oc)
            this.m_OL.appendChild(o);
        }
    }
    

    this.removeOption= function(){
        var l = this.m_OL.length;
        if(-1 == l){
            return;
        }
        for(var i=l-1; i >= 0 ; i--){
            var o = this.m_OL.options[i];
            if( o && o.selected == true){
                this.m_OL.removeChild(o);
            }
        }
    }

    this.removeAllOption= function(){
        /*
        var l = this.m_OL.length;
        if(-1 == l){
            return;
        }
        for(var i=l-1; i >= 0 ; i--){
            this.m_OL.removeChild( this.m_OL.options[i] );
        }
        //*/
        while ( this.m_OL.hasChildNodes() ){
            this.m_OL.removeChild( this.m_OL.firstChild );
        }
    }

    this.changeOption= function(txt, val){
        var l = this.m_OL.length;
        if(-1 == l || txt.trim() == "" || val.trim() == ""){
            return;
        }
        for(var i=0; i < l; i++){
            var o = this.m_OL.options[ i ];
            if( o && o.selected == true ){
                o.setAttribute("value", val );
                o.firstChild.data = txt;
            }
        }
    }

    this.getOptionValue = function(){
        var l = this.m_OL.length;
        if(-1 == l){
            return false;
        }
        var val = new Array();
        for(var i=0; i < l; i++){
            var o = this.m_OL.options[ i ];
            if( o && o.selected == true){
                val.push(o.getAttribute("value"));
            }
        }
        return val;
    }

    this.getOptionText = function(){
        var l = this.m_OL.length;
        if(-1 == l){
            return false;
        }
        var txt = new Array();
        for(var i=0; i < l; i++){
            var o = this.m_OL.options[ i ];
            if( o && o.selected == true){
                txt.push(o.firstChild.data);
            }
        }
        return txt;
    }

    this.selectAll = function(){
        var l = this.m_OL.length;
        for(var i=0; i < l; i++){
            this.m_OL.options[i].selected = true;
        }
    }

    this.sort = function(){
        var l = this.m_OL.length;
        for (var i=0; i < l-1; i++){
            for( var j = i+1; j < l; j++ ){
                var oi = this.m_OL.options[ i ];
                var oj = this.m_OL.options[ j ];
                if( oi.firstChild.data.toString() > oj.firstChild.data.toString() ){
                    var tt = oi.firstChild.data;
                    var tv = oi.getAttribute("value");
                    oi.setAttribute( "value", oj.getAttribute("value") );
                    oi.firstChild.data = oj.firstChild.data;
                    oj.setAttribute( "value", tv );
                    oj.firstChild.data = tt;
                    /*
                    var o = oi;
                    oi = oj;
                    oj = o;
                    //*/
                }
            }
        }
    }        
};

function move( f, t){
    var of = new List();
    var ot = new List();
    of.setObjectById( f );
    ot.setObjectById( t );
    ot.addOption( of.getOptionText(), of.getOptionValue() );
    of.removeOption();
    ot.sort();
}

function change(){
    var o = new List();
    o.setObjectById( "one" );
    o.changeOption( document.getElementById("o_t").value, document.getElementById("o_v").value );
    o.sort();
}

function del(){
    var o = new List();
    o.setObjectById( "one" );
    o.removeOption();
}

function add(){
    var o = new List();
    o.setObjectById( "one" );
    o.addOption( document.getElementById("o_t").value, document.getElementById("o_v").value );
    o.sort();
}

function s(){
    var o = new List();
    o.setObjectById( "two" );
    o.selectAll();
}

//]]>
相关评论
发表评论
姓名:
图码: