不到30行JS程式碼實現的Excel表格
不到30行JS程式碼實現的Excel表格,jQuery並非不可替代
某國外程式設計師展示了一個由原生JS寫成不依賴第三方庫的,Excel表格應用,有以下特性:
- 由不足30行的原生JavaScript程式碼實現
- 不依賴第三方庫
- Excel風格的語義分析 (公式以 "=" 開頭)
- 支援任意表示式 (=A1+B2*C3)
- 防止迴圈引用
- 基於localStorage的自動本地持久化儲存
效果展示:
程式碼分析:
CSS略,HTML核心僅一行:
<table></table>
JavaScript程式碼:
for (var i=0; i<6; i++) { var row = document.querySelector("table").insertRow(-1); for (var j=0; j<6; j++) { var letter = String.fromCharCode("A".charCodeAt(0)+j-1); row.insertCell(-1).innerHTML = i&&j ? "" : i||letter; } } var DATA={}, INPUTS=[].slice.call(document.querySelectorAll("input")); INPUTS.forEach(function(elm) { elm.onfocus = function(e) { e.target.value = localStorage[e.target.id] || ""; }; elm.onblur = function(e) { localStorage[e.target.id] = e.target.value; computeAll(); }; var getter = function() { var value = localStorage[elm.id] || ""; if (value.charAt(0) == "=") { with (DATA) return eval(value.substring(1)); } else { return isNaN(parseFloat(value)) ? value : parseFloat(value); } }; Object.defineProperty(DATA, elm.id, {get:getter}); Object.defineProperty(DATA, elm.id.toLowerCase(), {get:getter}); }); (window.computeAll = function() { INPUTS.forEach(function(elm) { try { elm.value = DATA[elm.id]; } catch(e) {} }); })();
其實通過上文我們可以看出最核心的幾步使用了EMEAScript5和HTML5的特性, 如:
querySelectorAll: 提供類似jQuery選擇器的查詢,由此可見,第三方JS庫如jQuery並不是必不少的。
var matches = document.querySelectorAll("div.note, div.alert");
defineProperty 提供了類以Java的get,set訪問/設定預處理方法,還有其他一些配置屬性,如:是否可配置,可列舉等。
Object.defineProperty(o, "b", {get : function(){ return bValue; }, set : function(newValue){ bValue = newValue; }, enumerable : true, configurable : true});
原文 jsfiddle.net
相關文章
- js實現的點選表格行實現背景變色程式碼JS
- java實現將excel表格資料解析成JSONArrayJavaExcelJSON
- 50行不到實現Promise化的jsonpPromiseJSON
- js實現的查詢表格中的資料程式碼例項JS
- Vue實現匯出excel表格VueExcel
- js匯出Excel表格JSExcel
- 針對Excel表格檔案操作的程式設計實現 (轉)Excel程式設計
- python讀寫Excel表格程式碼PythonExcel
- vue實現前端匯出excel表格Vue前端Excel
- EasyPoi框架實現Excel表格匯入框架Excel
- js迭代table表格的行和列程式碼例項JS
- js實現的表格隔行變色和滑鼠懸浮變色程式碼JS
- 不到30行, 用any-touch實現一個drawer
- 300行Kotlin程式碼實現的區塊鏈Kotlin區塊鏈
- excel表格中出現亂碼怎麼辦?Excel
- Excel表格轉Json格式ExcelJSON
- extjs 表格用法程式碼JS
- 使用SqlBulkCopy類實現匯入excel表格SQLExcel
- 實現table細線表格效果程式碼
- 30行Javascript程式碼實現圖片懶載入JavaScript
- vue.js前端實現excel表格匯出和獲取headers裡的資訊Vue.js前端ExcelHeader
- 滑鼠滑過實現table表格行背景變色程式碼例項
- 【圖解】Web前端實現相似Excel的電子表格圖解Web前端Excel
- js實現表格的增刪改查JS
- Excel表格的行高與列寬Excel
- 不到200行 JavaScript 程式碼如何實現富文字編輯器JavaScript
- 20 行 JS 程式碼實現貼上板功能JS
- js技巧:十幾行的程式碼實現vue.watchJSVue
- js實現的控制table指定行的隱藏和現實程式碼例項JS
- 表格實現標題合併程式碼例項
- excel中最常用的30個函式 excel表格常用函式技巧大全Excel函式
- 一百行js程式碼實現一個校驗工具JS
- 三行程式碼實現 JS 柯里化行程JS
- js table表格排序程式碼例項JS排序
- vue 專案中 實現列表的匯出excel表格的功能VueExcel
- excel表格中文字換行Excel
- JSON轉EXCEL程式碼( java)JSONExcelJava
- js 實現程式碼雨效果JS