不到30行JS代碼實現(xiàn)Excel表格的方法
本文實例講述了不到30行JS代碼實現(xiàn)Excel表格的方法,可見jQuery并非不可替代。分享給大家供大家參考。具體分析如下:
某國外程序員展示了一個由原生JS寫成不依賴第三方庫的,Excel表格應(yīng)用,有以下特性:
① 由不足30行的原生JavaScript代碼實現(xiàn)
② 不依賴第三方庫
③ Excel風(fēng)格的語義分析 (公式以 "=" 開頭)
④ 支持任意表達式 (=A1+B2*C3)
⑤ 防止循環(huán)引用
⑥ 基于localStorage的自動本地持久化存儲
效果展示如下圖所示:
代碼分析:
CSS略,HTML核心僅一行:
JavaScript代碼如下:
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并不是必不少的。
defineProperty 提供了類以Java的get,set訪問/設(shè)置預(yù)處理方法,還有其他一些配置屬性,如:是否可配置,可枚舉等。
set : function(newValue){ bValue = newValue; },
enumerable : true,
configurable : true});
希望本文所述對大家的javascript程序設(shè)計有所幫助。
- Python讀取Json字典寫入Excel表格的方法
- javascript將json格式數(shù)組下載為excel表格的方法
- Vue導(dǎo)出json數(shù)據(jù)到Excel電子表格的示例
- js導(dǎo)出Excel表格超出26位英文字符的解決方法ES6
- Java實現(xiàn)excel表格轉(zhuǎn)成json的方法
- JSP 導(dǎo)出Excel表格的實例
- Nodejs獲取網(wǎng)絡(luò)數(shù)據(jù)并生成Excel表格
- JS調(diào)用頁面表格導(dǎo)出excel示例代碼
- JavaScript將頁面表格導(dǎo)出為Excel的具體實現(xiàn)
- JavaScript實現(xiàn)Excel表格效果
相關(guān)文章
Express實現(xiàn)前端后端通信上傳圖片之存儲數(shù)據(jù)庫(mysql)傻瓜式教程(一)
這篇文章主要介紹了Express實現(xiàn)前端后端通信上傳圖片存儲數(shù)據(jù)庫(mysql)傻瓜式教程(一),需要的朋友可以參考下2015-12-12Bootstrap的Carousel配合dropload.js實現(xiàn)移動端滑動切換圖片
這篇文章主要介紹了bootstrap的Carousel配合dropload.js實現(xiàn)移動端滑動切換圖片,實現(xiàn)方法非常簡單,具有參考借鑒價值,需要的朋友可以參考下2017-03-03Javascript 計算字符串在localStorage中所占字節(jié)數(shù)
本文給大家分享的是使用Javascript 計算字符串在localStorage中所占字節(jié)數(shù),分別對UTF-8和UTF-16兩種編碼進行了詳細說明,有需要的小伙伴可以參考下。2015-10-10