我在中间列中有一个表,其中已在Moment.js中解析/格式化了日期。
我也有两个按钮,点击时我想要一个按钮只显示日期< 24小时之后,另一个按钮显示表格行,日期为> 24小时的路程。
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>
<button type="button" id="button1">Less than 24 hours</button>
<button type="button" id="button2">More than 24 hours</button>
<table id="myTable">
<thead>
<tr>
<th colspan="3">Table</th>
</tr>
</thead>
<tbody>
<tr>
<td>A</td>
<td class="dates">12/24/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
<tr>
<td>A</td>
<td class="dates">11/23/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
<tr>
<td>A</td>
<td class="dates">12/24/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
</tbody>
我想我必须使用Jquery,这就是我的想法。
$(document).ready(function() {
var m = moment();
var n = m.add(24, 'hours');
var $dates = $('.dates');
$('#button1').click(function() {
if ($dates.each > n) {
$dates.hide();
});
});
});
答案 0 :(得分:0)
尝试类似这样的内容(未经测试的代码段)。
$dates.each(function() {
var date = moment($(this).text());
if (date.isAfter(n)) {
$(this).hide();
} else {
$(this).show();
}
});
如果moment
在您的单元格中解析日期时间文本时出现问题,则可以明确指定格式see the documentation。
答案 1 :(得分:0)
使用此fiddle。愿它有帮助!
JS:
$('#less24,#gt24').click(function() {
var target = $(this).attr('id');
var currentdate = new Date();
$('.dates').each(function(){
var diff=daydiff(currentdate,new Date($(this).text()));
if(target === 'less24')
{
if(diff <1 && diff >-1)
{
$(this).parent().show();
}
else
{
$(this).parent().hide();
}
}
else
{
if(diff <1 && diff >-1)
{
$(this).parent().hide();
}
else
{
$(this).parent().show();
}
}
});
});
function parseDate(str) {
var mdy = str.split('/');
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
function daydiff(first, second) {
return Math.round((second-first)/(1000*60*60*24));
}
HTML:
<button type="button" id="less24">Less than 24 hours</button>
<button type="button" id="gt24">More than 24 hours</button>
<table id="myTable">
<thead>
<tr>
<th colspan="3">Table</th>
</tr>
</thead>
<tbody>
<tr>
<td>A</td>
<td class="dates">12/24/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
<tr>
<td>A</td>
<td class="dates">11/23/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
<tr>
<td>A</td>
<td class="dates">12/24/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
</tbody>
答案 2 :(得分:0)
您可以使用片刻isAfter
检查表格日期是否为&gt; 24小时之后和isBetween
检查表格日期是否在当前日期和接下来的24小时之间(这就是我解释&lt; 24小时之后的方式)
在解析表格日期对象时,您必须specify format,因为您的输入不是ISO 8601格式。
这是一个工作示例:
$('#button1').click(function(){
var $dates = $('.dates');
var m = moment().add(24, 'h');
$dates.each(function() {
var date = moment($(this).text(), 'MM/DD/YYYY hh:mm a');
if (date.isBetween(moment(), m)) {
$(this).parent().show();
} else {
$(this).parent().hide();
}
});
});
$('#button2').click(function(){
var $dates = $('.dates');
var m = moment().add(24, 'h');
$dates.each(function() {
var date = moment($(this).text(), 'MM/DD/YYYY hh:mm a');
if (date.isAfter(m)) {
$(this).parent().show();
} else {
$(this).parent().hide();
}
});
});
$('#button3').click(function(){
$('tr').show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>
<button type="button" id="button1">Less than 24 hours</button>
<button type="button" id="button2">More than 24 hours</button>
<button type="button" id="button3">Show All</button>
<table id="myTable">
<thead>
<tr>
<th colspan="3">Table</th>
</tr>
</thead>
<tbody>
<tr>
<td>A</td>
<td class="dates">12/24/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
<tr>
<td>A</td>
<td class="dates">11/23/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
<tr>
<td>A</td>
<td class="dates">12/24/2016 12:45 pm</td>
<td>C</td>
</tr>
<tr style="display:none;">
<td colspan="3"></td>
</tr>
</tbody>