美文网首页
原生js实现表格行列交换、内容交换

原生js实现表格行列交换、内容交换

作者: lwz4070 | 来源:发表于2018-09-13 15:01 被阅读0次
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
       .containe{
          margin-top: 100px;
          margin-left: 100px;
          user-select: none;/*禁止复制*/
       }
       table{
         width: 400px;
         min-height: 40px; 
         line-height: 40px; 
         text-align: center; 
         border-collapse: collapse;
       }
       table,th,td{
         border: 1px solid #000
       }
    </style>
</head>
<body>
   <div class="containe">
      <table id="table">
         <tr>
            <th>A</th>
            <th>B</th>
            <th>C</th>
            <th>D</th>
         </tr>
         <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
         </tr>
         <tr>
            <td>5</td>
            <td>6</td>
            <td>7</td>
            <td>8</td>
         </tr>
         <tr>
            <td>9</td>
            <td>10</td>
            <td>11</td>
            <td>12</td>
         </tr>
         <tr>
            <td>13</td>
            <td>14</td>
            <td>15</td>
            <td>16</td>
         </tr>
      </table>
   </div>
   <script type="text/javascript">
      
      var oTable = document.getElementById("table");
      //格子内容交换
      var content = null;
      var contentHtml = null;
      
      //行交换
      var thNode = null;
      var thNodeHtml = null;
      
      //列交换
      var startIndex = 0;
      var endIndex = 0;
      var trNodes = oTable.children[0].children;
      var startNodeHtml = [];


      //利用事件代理触发鼠标事件
      oTable.onmousedown = function(e) {
        var e = e || window.e;
        content = e.target;  //当前事件对象
        if(content.nodeName.toLocaleLowerCase() != 'th') {
          contentHtml = content.innerHTML; 
        }else {
            //行交换所用
            thNode = content.parentNode;
            thNodeHtml = thNode.innerHTML;
            //列交换所用
            startIndex = e.srcElement.cellIndex; //获取初始被触发的th索引值
        }
      }
      oTable.onmouseup = function(e) {
        var e = e || window.e;
        if(content.nodeName.toLocaleLowerCase() != 'th') {
           //格子内容交换
          content.innerHTML = e.target.innerHTML; 
          e.target.innerHTML = contentHtml;
        }else {
            if(e.target.nodeName.toLocaleLowerCase() == 'td') {
                //行交换
                thNode.innerHTML = e.target.parentNode.innerHTML;
                e.target.parentNode.innerHTML = thNodeHtml;
            }else if(e.target.nodeName.toLocaleLowerCase() == 'th') {
                //列交换
                endIndex = e.srcElement.cellIndex; ////获取结束被触发的th索引值
                for(var i = 0; i < trNodes.length; i++) { //文本内容替换
                   var temp = trNodes[i].children[startIndex].innerHTML;
                   trNodes[i].children[startIndex].innerHTML = trNodes[i].children[endIndex].innerHTML;
                   trNodes[i].children[endIndex].innerHTML = temp;
               }
            }
        }

      }
   </script>   
</body>
</html>

相关文章

  • 原生js实现表格行列交换、内容交换

  • Learn_for_Numpy

    数组转置和交换轴 转置 矩阵的行列交换 1. numpy.where (x if condition else ...

  • 矩阵的PLUP分解_线性代数_day43

    不能满足高斯消元发,需要交换矩阵的两列 交换矩阵的两列,需要右乘以置换矩阵 矩阵A = P*L*U*P 进行列交换...

  • 数据持久化

    1.必备条件 【交换器】必须是持久化 【队列】必须是持久化 【消息】必须是持久化 2.原生实现方式 交换器持久化:...

  • Lecture 2 Assignment (20190306)

    什么是交换?使用何种设备来实现交换任务? 请简要描述电路交换的过程。 电路交换具有哪些特点? 为什么说电路交换不适...

  • OC runtime 底层API解析

    关于class的API 交换方法API 替换方法的实现 交换方法的实现

  • numbers交换行列(transpose)

    选择table 选择transpose rows and columns 有仁兄居然还为了这个功能编写了apple...

  • RunTime实现

    1:RunTiem交换方法实现 //runTime交换方法实现 // 1,创建已有类的分类,并且实现自己的方...

  • 收藏:详解交换机基础知识

    交换机基础知识详解,内容包括交换机概述、交换机的分类和性能指标、交换机的接口和链接方式、虚拟局域网和多层交换、交换...

  • 计算机网络基础笔记

    内容来自网络资料整理 1. 电路交换与分组交换的区别? 优劣对比。 电路交换是以电路连接为目的的交换方式,通信之前...

网友评论

      本文标题:原生js实现表格行列交换、内容交换

      本文链接:https://www.haomeiwen.com/subject/ucnugftx.html