JavaScript怎样做一个拖拉表格自动计算的功能?
Admin 2021-09-17 群英技术资讯 1854 次浏览
在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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
React.forwardRef的API中ref必须指向dom元素而不是React组件,通过一段示例代码给大家介绍了React forwardRef使用方法及注意点还有一些特殊情况分析,感兴趣的朋友跟随小编一起看看吧
这篇文章主要介绍 React中组件的类别以及如何创建和使用组件,对新手学习React有一定的帮助,有这方面学习需要的朋友可以解决参考,接下来小编带着大家一起了解看看。
怎样用vue.js写一个简易音乐播放器?很多朋友都比较喜欢听音乐,对于音乐播放器,最基础的功能就是可以切换歌曲,因此下文小编就给大家分享一个实现简易音乐播放器的实例,感兴趣的朋友可以参考。
改变方法:1、使用“document.getElementsByTagName("body")”语句获取到body元素节点;2、使用“body元素节点.style.backgroundColor="颜色值";”语句来改变网页的背景颜色。
本篇文章给大家带来了关于JavaScript的相关知识,其中主要整理了函数的定义与基本使用的相关问题,包括了用函数语句定义、函数的调用、未定义的实参等等内容,下面一起来看一下,希望对大家有帮助。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008