根据日期隐藏表格行并单击按钮再次显示它们

时间:2018-05-14 10:28:38

标签: javascript jquery html-table toggle hide

在这个论坛的帮助下,我创建了一个基于当前日期隐藏行组的表。哪个好。我现在希望将其与显示隐藏日期的切换按钮相结合。但由于我对Javascript的了解非常有限,我无法完成它。有任何想法吗?这就是我到目前为止所做的:

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){
        $("p").slideToggle();
    });
});

$(document).ready(function(e) {
    $('.event_display_table tbody').each(function(index, element) {
        event_day = $(this).attr('data-date');
        event_day = new Date(event_day);
        today = new Date();
        if(event_day.getTime() < today.getTime())
        { 
           $(this).css('display','none');
        }

        console.log($(this).attr('data-date'));

    });
});

</script>
</head>

对于身体:

<body>

<p>This is a paragraph which can be hidden by clicking the button.</p>

<button>Toggle between slide up and slide down for a p element, but I want it to toggle 'show previous/hidden' dates</button>

<p>This table below shows only event dates in the future. Which is what I want. But I also want to have a toggle button option which does show the previous events. Is this possible?</p>

<div class="table-responsive">
          <table class="event_display_table"  border="1" >
            <thead>
              <tr>
                <th>Date</th>
                <th>Event</th>
              </tr>
            </thead>
<tbody data-date="2018-03-13">
               <tr>
                <td>2018-03-13</td>
                <td>My event detail 1</td>
              </tr>                  
               <tr>
                <td>2018-05-14</td>
                <td>My event detail 2</td>
              </tr>
</tbody>                  
<tbody data-date="2018-05-13">
                <tr>
                <td>2018-05-13</td>
                <td>My event detail 3</td>
              </tr>                  
</tbody>
<tbody data-date="2018-05-15">
                <tr>
                <td>2018-05-15</td>
                <td>My event detail 4</td>
              </tr>                  
              <tr>
                <td>2018-06-27</td>
                <td>My event detail 5</td>
              </tr>
</tbody>
<tbody data-date="2018-06-15">
              <tr>
                <td>2018-06-15</td>
                <td>My event detail 6</td>
              </tr>                  
            </tbody>
          </table>
        </div>

2 个答案:

答案 0 :(得分:0)

我必须重新构建HTML表格以使适当的js工作:

$(document).ready(function(){
    $("button").click(function(){
        $("p").slideToggle();
        $('.hidden').toggle()
    });
});

$(document).ready(function(e) {
    $('.event_display_table tbody tr td:first-child').each(function(index, element) {
        var event_day = $(this).text();
        event_day = new Date(event_day);

        // I added this which will set the time of "event_day" to 00:00:00
        event_day.setHours(0,0,0,0)

        var today = new Date();

        // I added this which will set the time of "today" to 00:00:00 
        today.setHours(0,0,0,0)

        if(event_day < today) {
           $(this).parent().hide()
           $(this).parent().addClass('hidden');
        }
    });
});

编辑HTML:

  <table class="event_display_table"  border="1" >
    <thead>
      <tr>
        <th>Date</th>
        <th>Event</th>
      </tr>
    </thead>
    <tbody>
       <tr>
        <td>2018-03-13</td>
        <td>My event detail 1</td>
      </tr>                  
       <tr>
        <td>2018-05-14</td>
        <td>My event detail 2</td>
      </tr>


        <tr>
        <td>2018-05-13</td>
        <td>My event detail 3</td>
      </tr>                  


        <tr>
        <td>2018-05-15</td>
        <td>My event detail 4</td>
      </tr>                  
      <tr>
        <td>2018-06-27</td>
        <td>My event detail 5</td>
      </tr>

      <tr>
        <td>2018-06-15</td>
        <td>My event detail 6</td>
      </tr>                  
    </tbody>
  </table>

答案 1 :(得分:0)

我会更改处理函数,将.in-past类添加到过去有日期的每个<tbody>。然后可以根据表的类隐藏或显示那些日期。这是一个片段:

$(document).ready(function() {
  $("button").click(function() {
    $('.event_display_table').toggleClass('future-only');
  });
});

$(document).ready(function(e) {
  $('.event_display_table tbody').each(function(index, element) {
    var event_day = $(this).data('date');
    event_day = new Date(event_day);
    today = new Date();
    if (event_day.getTime() < today.getTime()) {
      $(this).addClass('in-past');
    }
  });
});
.event_display_table.future-only .in-past {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>This is a paragraph which can be hidden by clicking the button.</p>

<button>Toggle between slide up and slide down for a p element, but I want it to toggle 'show previous/hidden' dates</button>

<p>This table below shows only event dates in the future. Which is what I want. But I also want to have a toggle button option which does show the previous events. Is this possible?</p>

<div class="table-responsive">
  <table class="event_display_table future-only" border="1">
    <thead>
      <tr>
        <th>Date</th>
        <th>Event</th>
      </tr>
    </thead>
    <tbody data-date="2018-03-13">
      <tr>
        <td>2018-03-13</td>
        <td>My event detail 1</td>
      </tr>
      <tr>
        <td>2018-05-14</td>
        <td>My event detail 2</td>
      </tr>
    </tbody>
    <tbody data-date="2018-05-13">
      <tr>
        <td>2018-05-13</td>
        <td>My event detail 3</td>
      </tr>
    </tbody>
    <tbody data-date="2118-05-15">
      <tr>
        <td>2018-05-15</td>
        <td>My event detail 4</td>
      </tr>
      <tr>
        <td>2118-06-27</td>
        <td>My event detail 5</td>
      </tr>
    </tbody>
    <tbody data-date="2018-06-15">
      <tr>
        <td>2018-06-15</td>
        <td>My event detail 6</td>
      </tr>
    </tbody>
  </table>
</div>

相关问题