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

源码网商城

javascript实现的listview效果

  • 时间:2021-02-07 00:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript实现的listview效果
<style type="text/css">    #oContainer {          width: 600px;          height: 500px;          border: 1px solid menu;          margin: 0px;          padding: 0px;          overflow: hidden;    }    a {          color: black;          text-decoration: none;    }    a:hover {          color: red;          text-decoration: underline;    } </style> <script language="javascript">    var oListView = new Object();    function listView(_container) {        this.author = '51JS.COM-ZMM';        this.version = 'ListView 1.0';        this.container = _container;        this.box = new Object();        this.headerWidth = 0;        this.headerHeight = 20;        this.itemWidth = 0;        this.itemHeight = 0;        this.rowsCount = 30;        this.isResize = false;        this.separate = new Object();        this.startPoint = 0;        this.endPoint = 0;        this.tempSeparate = new Object();        this.put_headerHeight = function(_height) { return _height; };        this.get_headerHeight = function() { return this.headerHeight; };        this.put_rowsCount = function(_count) { return _count; };        this.get_rowsCount = function() { return this.rowsCount; };    }    listView.prototype = {        boxInit : function() {            this.container.innerHTML = new String();            this.box = (function(_object) {                 var _box = document.createElement('DIV');                 with (_box) {                       id = 'ListViewBox';                       style.width = _object.offsetWidth;                       style.height = _object.offsetHeight;                       style.margin = '0px';                       style.padding = '0px';                       attachEvent('oncontextmenu', new Function('return false;'));                 }                 return _box;            })(this.container);            this.headerPanel = (function(_width, _height) {                 var _headerPanel = document.createElement('DIV');                 with (_headerPanel) {                       style.width = _width;                       style.height = _height;                 }                            return _headerPanel;            })(this.box.style.width, this.headerHeight);            this.headerPanel.appendChild(this.textPanel = (function() {                 var  _textPanel = document.createElement('NOBR');                 _textPanel.attachEvent('onmousemove', function() {                      with (oListView) {                            if (event.button == 1) {                                textPanel.style.cursor = 'E-resize';                                tempSeparate.style.left = event.clientX - getPosition(box).left;                                tempSeparate.style.display = 'inline';                                endPoint = event.clientX;                                isResize = true;                            }                      }                 });                               return _textPanel;            })());            this.rowItemPanel = (function(_width, _height) {                 var _itemPanel = document.createElement('DIV');                 with (_itemPanel) {                       style.width = _width;                       style.height = _height;                       style.overflow = 'hidden';                 }                 return _itemPanel;            })(this.box.style.width, parseInt(this.box.style.height) - this.headerHeight);            this.rowItemPanel.appendChild(this.dataPanel = (function() {                 var  _dataPanel = document.createElement('NOBR');                 with (_dataPanel) {                       style.cursor = 'default';                       attachEvent('onclick', function() {                           document.selection.empty();                       });                       attachEvent('onselectstart', function() {                           document.selection.empty();                       });                 }                 return _dataPanel;            })());            this.dataPanel.appendChild(this.tempSeparate = (function(_height) {                 var _tempSeparate = document.createElement('SPAN');                 with (_tempSeparate) {                       style.width = '1px';                       style.height = _height;                       style.border = '0px';                       style.backgroundColor = 'black';                       style.position = 'absolute';                       style.display = 'none';                                        }                 return _tempSeparate;            })(this.rowItemPanel.style.height));            this.box.appendChild(this.headerPanel);            this.box.appendChild(this.rowItemPanel);            this.container.appendChild(this.box);        },        drawListView : function(_headers, _aligns) {            this.boxInit();            this.drawHeader(_headers);            this.drawRowItem(_headers, _aligns);            document.attachEvent('onmouseup', this.finishResize);        },        drawHeader : function(_headers) {            this.headers = [];            this.headerWidth = Math.round((parseInt(this.headerPanel.style.width) - (_headers.length - 1) * 1) / _headers.length) + 1;            for (var i = 0; i < _headers.length; i ++) {                 var _header = document.createElement('SPAN');                 with (_header) {                       style.width = this.headerWidth;                       style.height = this.headerHeight;                       style.overflow = 'hidden';                       style.backgroundColor = 'buttonface';                       style.borderLeft = '1px solid buttonhighlight';                        style.borderTop = '1px solid buttonhighlight';                        style.borderRight = '1px solid buttonshadow';                        style.borderBottom = '1px solid buttonshadow';                       style.textAlign = 'center';                       style.fontSize = '12px';                       style.fontFamily = 'Sans-Serif, Tahoma';                       style.paddingTop = '1px';                       innerText = _headers[i];                 }                 this.textPanel.appendChild(_header);                 this.headers[this.headers.length] = _header;                 var _separate = this.getSeparate(true);                 this.textPanel.appendChild(_separate);                 this.headers[this.headers.length] = _separate;                                             }            var _last = document.createElement('SPAN');            with (_last) {                  style.width = this.headerPanel.offsetWidth;                  style.height = this.headerHeight;                  style.overflow = 'hidden';                  style.backgroundColor = 'buttonface';                  style.borderLeft = '1px solid buttonhighlight';                   style.borderTop = '1px solid buttonhighlight';                   style.borderRight = '1px solid buttonshadow';                   style.borderBottom = '1px solid buttonshadow';                   style.textAlign = 'center';                  style.fontSize = '12px';                  style.fontFamily = 'Sans-Serif, Tahoma';                  style.paddingTop = '1px';                  innerText = new String();            }            this.textPanel.appendChild(_last);             this.headers[this.headers.length] = _last;               },         drawRowItem : function(_headers, _aligns) {            this.items = [];            this.itemWidth = Math.round((parseInt(this.rowItemPanel.style.width) - (_headers.length - 1) * 1) / _headers.length) + 1;            this.itemHeight = parseInt(this.rowItemPanel.style.height) - 2;            for (var i = 0; i < _headers.length; i ++) {                 var _item = document.createElement('SPAN');                 with (_item) {                       style.width = this.itemWidth;                       style.height = this.itemHeight;                       style.overflow = 'hidden';                       style.padding = '0px';                       appendChild((function(_count, _width, _height, _align) {                             var _table = document.createElement('TABLE');                             with (_table) {                                   cellSpacing = 0;                                   cellPadding = 0;                                   style.width = _width;                                   style.tableLayout = 'fixed';                             }                             var _tbody = document.createElement('TBODY');                             for (var i = 0; i < _count; i ++) {                                  var _tableTr = document.createElement('TR');                                  var _tableTd = document.createElement('TD');                                  with (_tableTd) {                                        align = _align;                                        style.height = _height;                                                                    style.borderBottom = '1px solid #c6c3c6';                                        style.fontSize = '12px';                                        style.paddingLeft = '3px';                                        setAttribute('onclick', function() {                                            oListView.selectedRow(this.parentNode.rowIndex);                                          });                                        setAttribute('ondblclick', function() {                                            oListView.showSelected(this.parentNode.rowIndex);                                          });                                        innerHTML = new String(' ');                                  }                                  _tableTr.appendChild(_tableTd);                                  _tbody.appendChild(_tableTr);                             }                             _table.appendChild(_tbody);                             return _table;                       })(this.rowsCount, this.itemWidth, Math.round(this.itemHeight / this.rowsCount), _aligns[i]));                 }                 this.dataPanel.appendChild(_item);                 this.items[this.items.length] = _item;                  var _separate = this.getSeparate(false);                 _separate.style.height = this.itemHeight;                 this.dataPanel.appendChild(_separate);                 this.items[this.items.length] = _separate;                               }            var _last = document.createElement('SPAN');            with (_last) {                  style.width = this.rowItemPanel.offsetWidth;                  style.height = this.itemHeight;                  style.overflow = 'hidden';                  style.padding = '0px';                  appendChild((function(_count, _width, _height) {                        var _table = document.createElement('TABLE');                        with (_table) {                              cellSpacing = 0;                              cellPadding = 0;                              style.width = '100%';                        }                        var _tbody = document.createElement('TBODY');                        for (var i = 0; i < _count; i ++) {                             var _tableTr = document.createElement('TR');                             var _tableTd = document.createElement('TD');                             with (_tableTd) {                                   style.height = _height;                                                               style.borderBottom = '1px solid menu';                                   innerHTML = new String('<nobr style="height: ' + eval(_height-1) + ';overflow: hidden;"> </nobr>');                             }                             _tableTr.appendChild(_tableTd);                             _tbody.appendChild(_tableTr);                        }                        _table.appendChild(_tbody);                        return _table;                  })(this.rowsCount, this.itemWidth, Math.round(this.itemHeight / this.rowsCount)));            }            this.dataPanel.appendChild(_last);             this.items[this.items.length] = _last;         },                getSeparate : function(_resize) {            var _separate = document.createElement('SPAN');            with (_separate) {                  style.width = _resize ? '2px' : '1px' ;                  style.height = this.headerHeight;                  style.border = '1px ' + (_resize ? 'inset white' : 'solid #c6c3c6');                  style.overflow = 'hidden';                  style.position = 'absolute';                  if (_resize) {                      attachEvent('onmousedown', function() {                          with (oListView) {                                separate = event.srcElement;                                startPoint = event.clientX;                          }                      });                      attachEvent('onmouseenter', function() {                          event.srcElement.style.cursor = 'E-resize';                      });                  }            }            return _separate;                   },        getPosition : function(_object) {            var _top = _left = 0;            var _root = document.body;            while (_object != _root) {                   _left += _object.offsetLeft;                   _object = _object.offsetParent;            }            return { left: _left };                      },         resizeItem : function() {            with (this) {                  var _width, _movePart = endPoint - startPoint;                  for (var i = 0; i < headers.length; i ++) {                       if (headers[i] == separate) {                           var _bool = true;                           _bool = _bool && (_movePart < 0);                           _bool = _bool && (parseInt(headers[i - 1].style.width) < Math.abs(_movePart));                           if (_bool) {                               headers[i - 1].style.width = 0;                               items[i - 1].style.width = 0;                           } else {                               _width = parseInt(headers[i - 1].style.width);                               headers[i - 1].style.width = _width + _movePart;                               _width = parseInt(items[i - 1].style.width);                               items[i - 1].style.width = _width + _movePart;                               _width = parseInt(items[i - 1].firstChild.style.width);                               items[i - 1].firstChild.style.width = _width + _movePart;                               var _table = items[i - 1].firstChild;                               for (var j = 0; j < _table.rows.length; j ++) {                                    var _dataPanel = _table.rows[j].cells[0].children[0];                                                                     if (typeof _dataPanel != 'undefined') {                                        _width = parseInt(_dataPanel.style.width);                                         _dataPanel.style.width = _width + _movePart;                                    }                               }                           }                       }                  }            }         },        finishResize : function() {            with (oListView) {                  if (isResize) {                      isResize = false;                      textPanel.style.cursor = 'default';                      tempSeparate.style.display = 'none';                      resizeItem();                  }            }                    },        addListItem : function(_datas) {            var _itemNum = _datas.length > this.rowsCount ? this.rowsCount : _datas.length ;            for (var i = 0; i < _itemNum; i ++) {                 var n = 0;                 for (j = 0; j < this.items.length - 2; j ++) {                      if (j % 2 == 0) {                          var _dataPanel = document.createElement('NOBR');                          var _tableCell = this.items[j].firstChild.rows[i].cells[0];                          with (_dataPanel) {                                style.width = this.itemWidth;                                style.overflow = 'hidden';                                style.textOverflow = 'ellipsis';                                innerHTML = _datas[i][n];                          }                          _tableCell.innerHTML = new String();                          _tableCell.appendChild(_dataPanel);                          _tableCell.title = _datas[i][0];                          n ++;                      }                 }            }        },        selectedRow : function(n) {            for (var i = 0; i < this.items.length; i++) {                 if (i % 2 == 0) {                     var _table = this.items[i].firstChild;                     for (var j = 0; j < _table.rows.length; j ++) {                          var _dataPanel = _table.rows[j].cells[0].children[0];                                                           if (typeof _dataPanel != 'undefined') {                              if (j == n) {                                  _table.rows[j].cells[0].style.color = 'highlighttext';                                  _table.rows[j].cells[0].style.backgroundColor = 'highlight';                              } else {                                  _table.rows[j].cells[0].style.color = '';                                  _table.rows[j].cells[0].style.backgroundColor = '';                              }                              var _children = _table.rows[j].cells[0].firstChild.children;                              this.changeChild(_children, j == n);                          }                     }                                 }            }        },        changeChild : function(_children, _isSelected) {            if (typeof _children != 'undefined') {                for (var i = 0; i < _children.length; i ++) {                     if (_isSelected) {                         _children[i].style.color = 'highlighttext';                         _children[i].style.backgroundColor = 'highlight';                     } else {                         _children[i].style.color = '';                         _children[i].style.backgroundColor = '';                                              }                }                            } else {                return false;            }        },        showSelected : function(n) {            var _text = new String();            for (var i = 0; i < this.items.length - 2; i++) {                 if (i % 2 == 0) {                     var _table = this.items[i].firstChild;                     _text += this.headers[i].innerText + ':\n';                     _text += _table.rows[n].cells[0].firstChild.innerHTML + '\n\n';                             }            }            alert(_text);                    }          }    function initListView() {        var _headers = [];        _headers[_headers.length] = '标题';        _headers[_headers.length] = '内容';        _headers[_headers.length] = '时间';            _headers[_headers.length] = '管理';        var _aligns = [];        _aligns[_aligns.length] = 'left';        _aligns[_aligns.length] = 'left';        _aligns[_aligns.length] = 'center';            _aligns[_aligns.length] = 'center';                 oListView = new listView(self.oContainer);        oListView.drawListView(_headers, _aligns);        var _items = [];        _items[_items.length] = ['标题一', '内容一', '2006-6-21 10:30:00', '<a href="update.aspx">编辑</a>  <a href="delete.aspx">删除</a>'];        _items[_items.length] = ['标题二', '内容二', '2006-6-21 14:20:12', '<a href="update.aspx">编辑</a>  <a href="delete.aspx">删除</a>'];        _items[_items.length] = ['标题三', '内容三', '2006-6-21 20:45:36', '<a href="update.aspx">编辑</a>  <a href="delete.aspx">删除</a>'];        oListView.addListItem(_items);                                        }    attachEvent('onload', initListView); </script> <center>    <div id="oContainer"></div> </center>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部