<html> <head> <meta charset="utf-8" /> <title> new document </title> <meta name="generator" content="editplus" /> <meta name="author" content="" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <style type="text/css"> table{width: 600px; height: 600px;} td.selected{background: #cfe6fd;} #info{text-align:center;width:600px;font-size:40px;} </style> </head> <body> <table border="1" id="test"> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </table> <div id="info"></div> <script type="text/javascript"> var table = document.getElementById('test'); var info = document.getElementById('info'); var isMouseDown = false; var start; function select(obj){ (obj.className !== 'selected') && (obj.className = 'selected') } function unselect(obj){ obj.className = '' } function getXY(obj){ return { y : obj.parentNode.rowIndex, //当前单元格所在的行 x : obj.cellIndex //当前单元格所在的列 }; } function cleantable(){ var i = table.rows.length; while(i--){ var row = table.rows[i]; var j = row.cells.length; while(j--){ unselect(row.cells[j]); } } } table.onmousedown = function(e){ var target = e.target; if(target.tagName !== 'TD'){ return; } e.preventDefault(); e.stopPropagation(); cleantable(); //鼠标点下的时候, 清除整个table中已经处于状态的单元格 isMouseDown = true start = getXY(target); select(target) } //事件绑定这里,自己考虑兼容性...我懒得改了. table.addEventListener('mouseover', function(e){ if(isMouseDown){ e.preventDefault(); e.stopPropagation(); var target = e.target; if(target.tagName !== 'TD'){ return; } cleantable(); //清除整个table中已经选中的, 因为在下面会重新绘制 var xy = getXY(target); var lr = xy.x - start.x; var td = xy.y - start.y; //得到要绘制的区域的大小 var x = Math.abs(lr); var y = Math.abs(td); info.innerHTML = '选中区域大小:' + (y + 1) + '*' + (x + 1); lr = lr > 0 ? 1 : -1; td = td > 0 ? 1 : -1; // 循环整个区域, 选中该区域内的单元格 for(var i=0; i<=x; i++){ for(var j=0; j<=y; j++){ select(table.rows[start.y + (td * j)].cells[start.x + (lr * i)]); } } } }, true); table.onmouseup = function(){ isMouseDown = false; } </script> </body> </html>
单元格拖拽
最新推荐文章于 2019-05-08 13:29:43 发布