function EasyTable(options) { this._head = [] this._data = [] this._table = undefined this._selectIndex = [] } EasyTable.prototype = { createTable: function(tableId, head, data, onclick) { this._onClick = onclick this._head = head this._data = data this._table = $('#' + tableId) this._table.empty() var thead = $('') var trH = $('') for (let i = 0; i < head.length; i++) { const h = head[i]; var th = $('') th.prop("index", i) th.append(h) trH.append(th) this._selectIndex.push(i) // if (this._selectIndex.indexOf(i) != -1) { // th.show() // } else { // th.hide() // } } thead.append(trH) this._table.append(thead) var tbody = $('') tbody.addClass('scrollbar') this._refreshTbody(data, tbody) this._table.append(tbody) }, onNewData: function(data, merge) { var tbody = $(this._table.find('tbody')[0]) if (merge != true) { this._data = [] tbody.empty() } this._data.push.apply(this._data, data) this._refreshTbody(data, tbody) return this._data.length }, deleteRow: function(rowIndex){ var tbody = $(this._table.find('tbody')[0]) var tr = tbody.find('tr')[rowIndex] $(tr).remove() }, onChangeTh: function(index, add) { var ths = this._table.find('th') var tds = this._table.find('td') for (let i = 0; i < ths.length; i++) { var th = $(ths[i]) if (th.prop('index') == index) { th.toggle() } } for (let i = 0; i < tds.length; i++) { var td = $(tds[i]) if (td.prop('index') == index) { td.toggle() } } if (add) { this._selectIndex.push(index) } else { var i = this._selectIndex.indexOf(index) this._selectIndex.splice(i, 1) } }, _refreshTbody: function(data, tbody) { var that = this data.forEach(e => { var trC = $('') trC.addClass('tr-content') trC.on('onmouseover', function() { this.style.backgroundColor = 'var(--select_color)' }) trC.on('onmouseout', function() { this.style.backgroundColor = 'transparent' }) trC.on('click', function() { var trs = tbody.find('tr') for (let i = 0; i < trs.length; i++) { const tr = trs[i]; $(tr).css('background-color', '') } $(this).css('background-color', 'var(--select_color)') that._onClick(e) }) for (let i = 0; i < e.length; i++) { const v = e[i]; var td = $('') td.prop("index", i) td.append(v) trC.append(td) if (this._selectIndex.indexOf(i) != -1) { td.show("fast") } else { td.hide("fast") } } tbody.append(trC) }); if (data.length == 0) { tbody.hide() } else { tbody.show() } }, }