不到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
相關文章
- python讀寫Excel表格程式碼PythonExcel
- js匯出Excel表格JSExcel
- Vue實現匯出excel表格VueExcel
- vue實現前端匯出excel表格Vue前端Excel
- EasyPoi框架實現Excel表格匯入框架Excel
- excel表格中出現亂碼怎麼辦?Excel
- vue.js前端實現excel表格匯出和獲取headers裡的資訊Vue.js前端ExcelHeader
- js實現表格的增刪改查JS
- js 實現程式碼雨效果JS
- vue 專案中 實現列表的匯出excel表格的功能VueExcel
- JS實現前臺表格排序功能JS排序
- WinForm使用DataGridView實現類似Excel表格的查詢替換ORMViewExcel
- Excel表格底色怎麼去掉?去除Excel表格底色的方法Excel
- js程式碼實現多人聊天室JS
- SpringBoot利用java反射機制,實現靈活讀取Excel表格中的資料和匯出資料至Excel表格Spring BootJava反射Excel
- js實現txt/excel檔案下載JSExcel
- JS之實現Excel資料匯入JSExcel
- java程式碼實現excel檔案資料匯入JavaExcel
- 基於vue.js實現樹形表格的封裝Vue.js封裝
- excel-Spreadsheets:讀取Excel電子表格資料的Java原始碼ExcelJava原始碼
- excel表格:Excel 2021 LTSC for MacExcelMac
- [Office] WPS Excel通過新增巨集實現多張表格合併Excel
- word放不下excel表格怎麼辦 word放不下excel表格的方法Excel
- 使用emscripten實現js直接呼叫C程式碼(emscripten的初探)JSC程式
- js技巧:十幾行的程式碼實現vue.watchJSVue
- 小程式簡單實現表格佈局
- 說說如何基於 Vue.js 實現表格元件Vue.js元件
- python 操作 Excel 表格PythonExcel
- html轉Excel表格HTMLExcel
- java操作excel表格JavaExcel
- Excel等電子表格因無程式碼程式設計再次成為熱門 - WIREDExcel程式設計
- 幾道JS程式碼手寫題以及一些程式碼實現JS
- 可能這裡有你想要的js手寫程式碼實現JS
- 程式碼分享:體現js靈活性的def.jsJS
- element-ui匯出excel表格,程式碼基於vue-element-admin-masterUIExcelVueAST
- 從服務端生成Excel電子表格(Node.js+SpreadJS)服務端ExcelNode.js
- 電腦製作excel表格全步驟 excel製作表格的步驟教程Excel
- 三行程式碼實現 JS 柯里化行程JS
- 一百行js程式碼實現一個校驗工具JS