• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

不到30行JS代码实现的Excel表格_js

javascript 搞代码 7年前 (2018-06-21) 158次浏览 已收录 0个评论

  不到30行js代码实现的Excel表格,jquery并非不可替代

  某国外程序员展示了一个由原生JS写成不依赖第三方库的,Excel表格应用,有以下特性:

  • 由不足30行的原生JavaScript代码实现
  • 不依赖第三方库
  • Excel风格的语义分析 (公式以 "=" 开头)
  • 支持任意表达式 (=A1+B2*C3)
  • 防止循环引用
  • 基于localStorage的自动本地持久化存储

  效果展示:

不到30行JS代码实现的Excel表格_js

  代码分析:

  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

欢迎大家阅读《不到30行JS代码实现的Excel表格_js》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:不到30行JS代码实现的Excel表格_js

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址