js拖拉表格實現(xiàn)內(nèi)容計算
更新時間:2021年04月19日 11:50:16 作者:莫兮是我
這篇文章主要為大家詳細(xì)介紹了js拖拉表格實現(xiàn)內(nèi)容計算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了js拖拉表格實現(xiàn)內(nèi)容計算的具體代碼,供大家參考,具體內(nèi)容如下
前言
- 制作網(wǎng)頁版Excel
- H5新增功能:可拖拉-draggable, 可編輯-contenteditable
實現(xiàn)結(jié)果
代碼實現(xiàn)
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, 行數(shù) // @param2: cols, 列數(shù) 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('選擇正確的內(nèi)容'); 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); }); //阻止默認(rèn)處理 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) { //應(yīng)該詳細(xì)的邊界判斷 if (this.startX == x || this.startY == y || isNaN(data)) { alert('不要放在原地不動'); return false; } // 取和 return data + this.startData; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于Bootstrap實現(xiàn)tab標(biāo)簽切換效果
這篇文章主要為大家詳細(xì)介紹了基于Bootstrap實現(xiàn)tab標(biāo)簽切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05Sample script that displays all of the users in a given SQL
Sample script that displays all of the users in a given SQL Server DB...2007-06-06JavaScript實現(xiàn)煙花特效(面向?qū)ο?
這篇文章主要為大家詳細(xì)介紹了JavaScript使用面向?qū)ο缶幊虒崿F(xiàn)煙花特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08JS實現(xiàn)的網(wǎng)頁倒計時數(shù)字時鐘效果
這篇文章主要介紹了JS實現(xiàn)的網(wǎng)頁倒計時數(shù)字時鐘效果,是一款非常實用的javascript倒計時特效,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03用javascript獲取textarea中的光標(biāo)位置
Javascript一向以他的靈活隨意而著稱,這也使得它的功能可以非常的強大,而由于沒有比較好的調(diào)試工具,又使得它使用起來困難重重,尤其使對于一些初學(xué)者,更是感覺到無從下手。今天探討的問題是用javascript獲取textarea中光標(biāo)的位置。2008-05-05