JavaScript怎样做一个拖拉表格自动计算的功能?
Admin 2021-09-17 群英技术资讯 985 次浏览
在Excel中,我们可以通过拖拉表格来实现自动计算表格的内容,那么我们做网页版的Excel表格,这个功能要如何实现呢?接下来小编就给大家分享用JavaScript实现拖拉表格自动计算内容的功能。
前言
实现结果
代码实现
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Table</title> <style> table, th, tr, td { margin: 0; padding: 0; width: 800px; text-align: center; border: solid 1px #000; } td { width: auto; background-color: pink; } .ops { cursor: move; } </style> </head> <body> <table id="table"> <thead id="thead"> <tr id="header"> <th>1</th> </tr> </thead> <tbody id="tbody"> </tbody> </table> <script src="main.js"></script> </body> </html>
main.js
createTable(10,10); init(); // 表格初始化 // @param1: rows, 行数 // @param2: cols, 列数 function createTable(rows, cols) { let header = document.getElementById('header'), body = document.getElementById('tbody'); for (let i = 0; i < rows; i ++){ let tmp = '', trEle = document.createElement('tr'); for (let j = 0; j < cols; j ++){ //thead if (i <= 1){ tmp += `<th>${j}</th>`; } else { tmp += `<td class="ops" draggable="true">${i}</td>`; } } // console.log(tmp); if (i <= 1) header.innerHTML = tmp; else{ trEle.innerHTML = tmp; body.appendChild(trEle); } } } /* * 表格拖拽 * */ function init(){ let x,y,data; document.body.addEventListener('click', event=>{ event.preventDefault(); }); document.body.addEventListener('dragstart', event => { if (event.target.nodeName.toLowerCase() !== 'td'){ alert('选择正确的内容'); return false; } // console.log(event); x = event.clientX - 5, y = event.clientY - 5, data = parseInt(event.target.firstChild.data); let img = new Image(); img.src = 'test.png'; event.dataTransfer.setDragImage(img, 0,0); // console.log(x, y, data); }); //阻止默认处理 document.body.addEventListener('dragover', event => { event.preventDefault(); }); document.body.addEventListener('drop', event => { let tmp = new dragCalculation(x,y,data); let endX = event.clientX - 5, endY = event.clientY - 5, endData = parseInt(event.target.firstChild.data); // console.log(event.target.firstChild.data); // console.log(isNaN(endData)) if (isNaN(endData)) { alert('移动位置错误'); return false; } // console.log(endX, endY, endData); let result = tmp.sum(endX, endY, endData); event.target.firstChild.data = result; event.target.style.backgroundColor = '#b4e318' }); } let dragCalculation = function (x, y, data){ this.startX = x; this.startY = y; this.startData = data; }; dragCalculation.prototype.sum = function (x, y, data) { //应该详细的边界判断 if (this.startX == x || this.startY == y || isNaN(data)) { alert('不要放在原地不动'); return false; } // 取和 return data + this.startData; }
关于JavaScript实现拖拉表格自动计算的功能就介绍到这,上述实例具有一定的借鉴价值,感兴趣的朋友可以参考学习,希望能对大家有帮助,想要了解更多JavaScript的内容,大家可以关注群英网络其它相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章给大家分享的是Node.js中buffer模块的相关内容,一些朋友可能不知道buffer是什么,下文会给大家来详细的介绍一下,另外还给大家介绍了buffer的创建、复制、拼接、截取、填充等等,感兴趣的朋友接下来就跟随小编一起了解看看吧。
JS怎样实现插入、交换、选择和归并四种排序,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
javascript将时间转毫秒的方法:1、通过“(new Date(startDate)).getTime();”将日期转换为毫秒;2、通过“Date.parse(new Date(arr[0]...)”方法将日期转化为毫秒。
本文介绍了如何用uni-app实现顶部导航栏显示按钮和搜索框,感兴趣的同学,可以参考下,并且试验一下。
使用typescript类型来实现快排详情 目录 前言 元组快排 实现逻辑 实现数字的大小比较 实现 A 是否 小于或等于 B 实现 A 是否 大于或等于 B 实现Filter 优化Filter 重构数字的大小值比较 重构Filter 实现快排 测试快排 优化:负数 负数的判断 字符串转数字 获取负数的值 完善获取绝对值 重构数字的大小比较 重构快排 测试快排V2 前言 本文执行环境typescript,版本4.7.4 不使用typescript的计算能力,通过类型来实现快排 元组快排 能否将元组 [3, 1, 2, 4] 通过泛型转换成
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008