jquery修改下一个元素文本

时间:2015-10-16 15:11:21

标签: jquery

我正在尝试从现场倒计时2015-10-15的价值减少5天 最终价值应为2015-10-10

<tr>
<td style="white-space: nowrap;" width="30%" class="clsGridCellBase searchable">Time Countdown&nbsp;</td>
<td width="70%" class="clsGridCellBase searchable ">2015-10-15</td>

我想知道在JQuery中是否有更优雅的方法 这就是我尝试的bean:

var date =    $('td').filter(function(i) {
           $(this).html().indexOf('*Time Countdown*') >= 0;
}).next().text();

var newDate = new Date(date) - 5;
//post the value to the same field.

 var date =    $('td').filter(function(i) {
               $(this).html().indexOf('*Time Countdown*') >= 0;
    }).next().text(newDate);

3 个答案:

答案 0 :(得分:1)

您可以在一个链中完成所有操作,方法是找到正确的td,并向返回替换数据的.text()函数提供函数。您也可以访问该方法中的当前文本。

&#13;
&#13;
$('td').filter(function(){
    return $(this).html().indexOf("Time Countdown")>-1;  
}).next().text(function(){
    var current = $(this).text().split('-');
    var d = new Date(current[0],current[1],current[2]);
    d.setDate(d.getDate() - 5);
    return d.getFullYear() + '-' + d.getMonth() + '-' + d.getDate();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td style="white-space: nowrap;" width="30%" class="clsGridCellBase searchable">Time Countdown&nbsp;</td>
<td width="70%" class="clsGridCellBase searchable ">2015-10-15</td>
</tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

  

尝试将字段Time Countdown的值减少5天

如果正确解释问题,请尝试使用:contains().text()Date.prototype.getDate()String.prototype.replace()

&#13;
&#13;
$("table td:contains(Time Countdown)")
.next("td").text(function(_, date) {
  var d = new Date(date); 
  return date.replace(/\d+$/, d.getDate() - 5)
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tr>
  <td style="white-space: nowrap;" width="30%" class="clsGridCellBase searchable">Time Countdown&nbsp;</td>
  <td width="70%" class="clsGridCellBase searchable ">2015-10-15</td>
</tr>
  </table>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

存在一些缺陷:

  • 过滤器无法找到日期为
  • 的单元格
  • 计算过于简单

我在这里做了一个小提琴:http://jsfiddle.net/daeLu5ee/

主要部分:

var date =    $('#in').html();
var newDate = new Date(date);
newDate.setTime(newDate.getTime() - (5*24*3600*1000));

 $('#out').html(newDate.toLocaleString());