RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1393013
Accepted
Leks
Leks
Asked:2022-08-24 03:04:49 +0000 UTC2022-08-24 03:04:49 +0000 UTC 2022-08-24 03:04:49 +0000 UTC

表未迭代

  • 772

let arr = Array.from(document.querySelector('#grid').rows)
document.querySelector('#grid').addEventListener('click', event =>{
   if(event.target.dataset.type == 'number'){
      arr.forEach( item => {
         if(item.rowIndex > 0){
           
            arr.sort(() => {
               item.cells[0].firstChild.data > item.cells[0].firstChild.data
            })
            
         }
      }) 
   }
})
table {
    border-collapse: collapse;
  }
  th, td {
    border: 1px solid black;
    padding: 4px;
  }
  th {
    cursor: pointer;
  }
  th:hover {
    background: yellow;
  }
  <table id="grid">
    <thead>
      <tr>
        <th data-type="number">Возраст</th>
        <th data-type="string">Имя</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>5</td>
        <td>Вася</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Петя</td>
      </tr>
      <tr>
        <td>12</td>
        <td>Женя</td>
      </tr>
      <tr>
        <td>9</td>
        <td>Маша</td>
      </tr>
      <tr>
        <td>1</td>
        <td>Илья</td>
      </tr>
    </tbody>
  </table>

  1. 如何使其按年龄从小到大,按名称从 A 到 Z 格式化?
javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Laukhin Andrey
    2022-08-24T05:26:35Z2022-08-24T05:26:35Z

    方向是正确的。要成功解决问题,我们需要:

    1. 不要忘记删除带有标题的第一行
    2. 定义一个函数来重建 DOM 中表的行元素
    3. 点击表头时,确定表格列的索引
    4. 根据列类型调用相应的排序函数
    5. 重建 DOM

    要比较字符串,最好使用localeCompare返回 -1、1 或 0 的方法。我们以经典方式比较数字。

    let gridElement = document.querySelector('#grid');
    let arr = Array.from(gridElement.rows);
    
    arr.shift();
    
    const rearrange = () => {
      for (var i = 0; i < arr.length; i++) arr[i].parentNode.appendChild(arr[i])
    };
    
    gridElement.addEventListener('click', event => {
    
      let cellIndex = event.target.cellIndex;
    
      if (event.target.dataset.type == 'number') {
        arr.sort((e1, e2) => {
          let a = parseFloat(e1.cells[cellIndex].innerText);
          let b = parseFloat(e2.cells[cellIndex].innerText);
    
          return a - b;
        });
      } else {
        arr.sort((e1, e2) => {
          let a = e1.cells[cellIndex].innerText.toLowerCase();
          let b = e2.cells[cellIndex].innerText.toLowerCase();
    
          return a.localeCompare(b);
        });
      }
    
      rearrange();
    })
    table {
      border-collapse: collapse;
    }
    
    th,
    td {
      border: 1px solid black;
      padding: 4px;
    }
    
    th {
      cursor: pointer;
    }
    
    th:hover {
      background: yellow;
    }
    <table id="grid">
      <thead>
        <tr>
          <th data-type="number">Возраст</th>
          <th data-type="string">Имя</th>
        </tr>
      </thead>
    
      <tbody>
        <tr>
          <td>5</td>
          <td>Вася</td>
        </tr>
        <tr>
          <td>2</td>
          <td>Петя</td>
        </tr>
        <tr>
          <td>12</td>
          <td>Женя</td>
        </tr>
        <tr>
          <td>9</td>
          <td>Маша</td>
        </tr>
        <tr>
          <td>1</td>
          <td>Илья</td>
        </tr>
      </tbody>
    </table>

    可以改进代码以避免无意义的排序/重建。

    • 1

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5