function Table2JsonBuilder(_tblId){ var _tbl = document.getElementById(_tblId); if(!_tbl){ return; } this.table = document.getElementById(_tblId); this.tableHeader = new Array(); this.json = {}; } Table2JsonBuilder.prototype.extend = function(_destination,_source){ for (var p in _source) { _destination[p] = _source[p]; } return _destination; } var Element = new Object(); Element.Methods = { findNodes : function(_tagName){ var _clds = this.childNodes; if(!_clds) return null; var clds = new Array(); for(var i=0,j=_clds.length; i<j; i++){ var node = _clds[i]; if(!node) continue; if(!node.tagName) continue; if(node.tagName.toLowerCase() != _tagName.toLowerCase()){ continue; } clds.push(node); } return (clds.length == 0)? null: clds; } } Table2JsonBuilder.prototype.build = function(){ this.table = this.extend(this.table,Element.Methods); var _theads = this.table.findNodes("thead"); if(_theads == null || _theads.length == 0){ alert("错误:该表格为非标准格式[table无thead元素]!"); return; } var _thead = _theads[_theads.length - 1]; if(!_thead.childNodes){ alert("错误:该表格为非标准格式[thead无任何子元素]!"); return; } var _tr = _thead.childNodes[_thead.childNodes.length - 1]; _tr = this.extend(_tr,Element.Methods); var _ths = _tr.findNodes("th"); if(_ths == null || _ths.length == 0){ alert("错误:该表格为非标准格式[thead无th元素]!"); return; } this.tableHeader = _ths; var _tbodys = this.table.findNodes("tbody"); if(_tbodys == null || _tbodys.length == 0){ return; } for(var i=0,j=_tbodys.length; i<j; i++){ var _tbody = _tbodys[i]; var _trs = _tbody.childNodes; for(var m=0,n=_trs.length; m<n; m++){ var _tr = _trs[m]; var _tds = _tr.childNodes; var els = {}; for(var o=0,p=_tds.length; o<p; o++){ var td = _tds[o]; var a = _ths[m].innerHTML; els.a = td.innerHTML; } this.json.tr = els; } } } window.onload = function(){ var builder = new Table2JsonBuilder("marksTbl"); builder.build(); }