我在使用下面的代码时遇到了一些麻烦,而且我对jQuery来说太新了。
function calcExpiration(){
var getState = jQuery( "#state" ).text();
var getcalldate = jQuery( "#date" ).text();
var date = new Date( getcalldate );
if (getState == "KY" || getState == "IN"){
date.setDate(date.getDate() + 30);
}
if (getState == "WV" || getState == "OH"){
date.setDate(date.getDate() + 10);
}
var expmonth = date.getMonth()+1;
var expdate = date.getDate();
var expyear = date.getFullYear();
jQuery( "#expiration" ).html( expmonth + "/" + expdate + "/" + expyear);
}
calcExpiration();
我在表格中有多行信息,并且我希望每行都有到期计算,而上述代码仅适用于第一行。
答案 0 :(得分:0)
我的第一个猜测是你正在使用不正确的ID。在HTML文档中,只有一个带有一个id的元素,因此jQuery('#expiration')
可能只返回第一个匹配元素,即使多个元素具有相同的ID。
我建议您将expiration
从ID更改为类。通常,在Jquery处理时,使用类而不是id不会出错。
另外,我想到一个更具描述性的名字。 .expiration
是通用的,使上面的Jquery代码难以脱离上下文;也许类似.expiration_date_updatable
的东西会更令人回味?也许这是一个糟糕的例子,但一般来说,只要这些类挂钩到Jquery行为,就使用非常精确和描述性的类名。为你的代码的读者(包括你未来的自己)做它。
答案 1 :(得分:0)
ID(#)将始终适用于具有给定id的第一个元素,以使所有您应该使用类(。)的工作...下面是一个简单的示例
<p class="test-tag">Demo</p>
<p class="test-tag">Demo</p>
<p class="test-tag">Demo</p>
<p class="test-tag">Demo</p>
<p class="test-tag">Demo</p>
<a class="test">Btn1</a>
<a class="test">Btn2</a>
<a class="test">Btn3</a>
<a class="test">Btn4</a>
jQuery( '.test' ).click(function() {
var time = jQuery.now();
jQuery('.test-tag').empty().html(time);
});
答案 2 :(得分:0)
我不是jQuery的专家,但您是否尝试过这样做我认为您想要实现的目标?
HTML
<table>
<tr>
<th>State</th>
<th>Date</th>
<th>Expiration</th>
</tr>
<tbody>
<tr>
<td>KY</td>
<td>02-12-2015</td>
<td></td>
</tr>
<tr>
<td>IN</td>
<td>01-20-2014</td>
<td></td>
</tr>
<tr>
<td>WV</td>
<td>03-02-2014</td>
<td></td>
</tr>
<tr>
<td>OH</td>
<td>04-05-2012</td>
<td></td>
</tr>
</tbody>
的jQuery
$('table tbody tr:not(":first")').each(function (e) {
var state = $('td:eq(0)', this).text();
var getcalldate = $('td:eq(1)', this);
var dsplit = getcalldate.text().split("-");
var d=new Date(dsplit[2],dsplit[0],dsplit[1]-1);
var expDates = $('td:eq(2)', this);
var expmonth = d.getMonth() + 1;
var expdate = d.getDate();
var expyear = d.getFullYear();
var resultDate = expmonth + "-" + expdate + "-" + expyear
if (state == "KY" || state == "IN") {
expDates.text(resultDate);
d.setDate(d.getDate() + 30);
} else if (state == "WV" || state == "OH") {
expDates.html(resultDate);
d.setDate(d.getDate() + 10);
}
});