简体   繁体   English

javascript 点击表格时删除表格列

[英]javascript table column remove when click table

It can be awkward because English is not my first language.这可能会很尴尬,因为英语不是我的第一语言。

I have a task to write pure javascript code that deletes the clicked column when the table is clicked.我的任务是编写纯 javascript代码,当单击表时删除单击的列。 Unfortunately I can't use jquery.不幸的是,我不能使用 jquery。

let cells = document.querySelectorAll("table td"); is the code I basically need to use.是我基本上需要使用的代码。

window.onload = function () {
      function click(e) {
        let cells = document.querySelectorAll("table td");
        let index = e.target.cellIndex;
        cells.forEach((td, i) => {
          if (td.cellIndex === index) {
            td.parentElement.querySelectorAll("td")[index].remove();
          }
        })
      }
      
      // set onclick event for the head of each column
      document.querySelectorAll('tr > td').forEach(td => td.onclick = click)
    }

In my source, I delete all the columns to the right of where I clicked to see where the problem is.在我的源代码中,我删除了单击以查看问题所在右侧的所有列。

Only the column of the clicked td should be deleted.仅应删除单击的 td 的列。

I don't know where the problem is or how to fix it.我不知道问题出在哪里或如何解决。

You can select the cells you want to remove via the nth-child selector, based on cellIndex .您可以 select 基于cellIndex通过nth-child选择器删除要删除的单元格。 The below table demonstrates this:下表说明了这一点:

 function click(e) { let index = e.target.cellIndex; document.querySelectorAll(`tr td:nth-child(${index + 1})`).forEach(cell => cell.remove()); } // set onclick event for the head of each column document.querySelectorAll('tr > td').forEach(td => td.onclick = click)
 <table border="1"> <tr><td>Column 1</td><td>Column 2</td><td>Column 3</td><td>Column 4</td><td>Column 5</td></tr> <tr><td>Column 1</td><td>Column 2</td><td>Column 3</td><td>Column 4</td><td>Column 5</td></tr> <tr><td>Column 1</td><td>Column 2</td><td>Column 3</td><td>Column 4</td><td>Column 5</td></tr> <tr><td>Column 1</td><td>Column 2</td><td>Column 3</td><td>Column 4</td><td>Column 5</td></tr> <tr><td>Column 1</td><td>Column 2</td><td>Column 3</td><td>Column 4</td><td>Column 5</td></tr> </table>

Collect all tr.收集所有 tr。 Apply click eventListener to every single tr.将 click eventListener 应用于每个 tr。 The EventHandler collect all td's by column index. EventHandler 按列索引收集所有 td。 Then use remove() function.然后使用 remove() function。

 document.querySelectorAll('tr').forEach((c) => { c.addEventListener('click', (e) => { document.querySelectorAll('tr td:nth-child(' + (e.target.cellIndex + 1) + ')').forEach((td) => { td.remove(); }); }) });
 table { border: 1px solid #000; }
 <table> <tr><td>Col 1</td><td>Col 2</td><td>Col 3</td><td>Col 4</td></tr> <tr><td>Col 1</td><td>Col 2</td><td>Col 3</td><td>Col 4</td></tr> <tr><td>Col 1</td><td>Col 2</td><td>Col 3</td><td>Col 4</td></tr> <tr><td>Col 1</td><td>Col 2</td><td>Col 3</td><td>Col 4</td></tr> <tr><td>Col 1</td><td>Col 2</td><td>Col 3</td><td>Col 4</td></tr> <tr><td>Col 1</td><td>Col 2</td><td>Col 3</td><td>Col 4</td></tr> </table>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM