2013-02-06 100 views
1

我正在逐步通過.days的每個班級 - 由於要添加倒數數字直到到期日。 EG:2天內到期 - 截止日期:2013年2月8日倒計時到期日和過期到期日

我還希望它顯示過期到期的負面日期。由於

http://jsfiddle.net/infatti/XeqPT/#base

的天數是錯誤的,我不明白爲什麼?

<ul> 
<li>Due in <span class="days-due"></span> days - Due Date is <span class="month">02</span>/<span class="day">08</span>/<span class="year">2013</span></li> 
<li>Due in <span class="days-due"></span> days - Due Date is <span class="month">02</span>/<span class="day">10</span>/<span class="year">2013</span></li> 
</ul> 

function daysUntil(year, month, day) { 
    var now = new Date(), 
     dateEnd = new Date(year, month - 1, day), // months are zero-based 
     days = (dateEnd - now)/1000/60/60/24; // convert milliseconds to days 

    return Math.round(days); 
} 

var monthDue = $(this).next('.month').text(); 
var dayDue = $(this).next('.day').text(); 
var yearDue = $(this).next('.year').text(); 

$('.days-due').each(function(){ 
    $(this).text(daysUntil(yearDue, monthDue, dayDue)); 
}); 

回答

1

$(this)在上下文指window

next看着兄弟姐妹。你的跨度不是窗口的兄弟姐妹。

更改您的選擇器。此外,您的代碼只查看一組元素,但您的標記有兩個。

試試這個

function daysUntil(year, month, day) { 
    var now = new Date(), 
     dateEnd = new Date(year, month - 1, day); // months are zero-based 
    days = (dateEnd - now)/1000/60/60/24; // convert milliseconds to days 
    return Math.round(days); 
} 

$("li").each(function() { 

    var monthDue = $(this).find('.month').text(); 
    var dayDue = $(this).find('.day').text(); 
    var yearDue = $(this).find('.year').text(); 

    $(this).find(".days-due").text(daysUntil(yearDue, monthDue, dayDue)); 

}); 

找到你所有li元素,並循環通過他們做你的計算。由於我們選擇了lithis的上下文更改。

+0

修復了天數到期的號碼,但它沒有隔離每個日期。它將返回所有.days-due的最後結果。 – simple

+0

@簡單,很抱歉,請參閱更新。你不需要在'.days-due'上做'each'。只要找到一個孩子。 – Brandon