从给定索引javascript上的表中删除列

时间:2015-05-20 09:21:14

标签: javascript jquery html

在一个函数中,我需要传递一个arr。我想删除html表的所有列。

不知道该怎么做。

我试过了,但没有工作:

<table>
<thead>
    <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
        <td>d</td>
        <td>e</td>
    </tr>
</thead>
<tbody>
    <tr>
        <td>a1</td>
        <td>b1</td>
        <td>c1</td>
        <td>d1</td>
        <td>e1</td>
    </tr>
    <tr>
        <td>a2</td>
        <td>b2</td>
        <td>c2</td>
        <td>d2</td>
        <td>e2</td>
    </tr>
    <tr>
        <td>a3</td>
        <td>b3</td>
        <td>c3</td>
        <td>d3</td>
        <td>e3</td>
    </tr>
</tbody>
</table>

在javascript中我有一个变量:

var arr=[0,2,3];

我想从指定的表中删除所有列及其数据,因此输出将为:

<table>
<thead>
    <tr>            
        <td>b</td>
        <td>e</td>
    </tr>
</thead>
<tbody>
    <tr>
        <td>b1</td>
        <td>e1</td>
    </tr>
    <tr>
        <td>b2</td>
        <td>e2</td>
    </tr>
    <tr>
        <td>b3</td>
        <td>e3</td>
    </tr>
</tbody>
</table>

1 个答案:

答案 0 :(得分:2)

您可以使用该数组为要删除的td创建过滤器,如下所示

var arr = [0, 2, 3];

var filters = arr.map(function(val) {
  return 'td:nth-child(' + (val + 1) + ')';
});

$('table').find(filters.join()).remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <td>a</td>
      <td>b</td>
      <td>c</td>
      <td>d</td>
      <td>e</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>a1</td>
      <td>b1</td>
      <td>c1</td>
      <td>d1</td>
      <td>e1</td>
    </tr>
    <tr>
      <td>a2</td>
      <td>b2</td>
      <td>c2</td>
      <td>d2</td>
      <td>e2</td>
    </tr>
    <tr>
      <td>a3</td>
      <td>b3</td>
      <td>c3</td>
      <td>d3</td>
      <td>e3</td>
    </tr>
  </tbody>