2014-10-05 107 views
0

我正在建立我的小日历与纯JavaScript(所以请不要jquery),我有麻烦,使前月显示 到目前为止,这是我的代码获取上个月:日历继续得到前一个月

document.getElementById("prev-month").addEventListener("click", function(e) { 
    console.log('first', prevMonth); 
    prevMonth = monthNamesArray[currentMonth - 1]; //Array with all the month labels like ['Jan', 'Feb', 'Mar']; 
    month.innerHTML = '<td>'+ prevMonth +'</td>'; //Here i replace the html cell where the month is display 
    console.log('second', prevMonth); 
}); 

两个调试程序的执行console.log是: 首先点击:第一未定义第二九月(比上月) 第二点击:第一九月第二月

为什么在第二点击第二个控制台日志没有成为第二个八月? 为什么prevMonth只会回到一个月?

任何帮助,特别的解释,是真正的赞赏

回答

1

你没有更新currentMonth,仍然指向october

+0

啊哈!谢谢!我怎么看不到它! – 2014-10-05 20:18:58

1

是否有任何理由为什么你需要prevMonth,以保持它正确更新,你会非常写:

currentMonth = monthNamesArray[(currentMonth==0)? 11 : currentMonth-1]; 

三元运算符可以确保在一月你不去monthNamesArray[-1],但它代替回到monthNamesArray[11]

编辑: 两个方向,方向变量可以是任何大小的整数值,所以你可以去方向= -2,它会倒退2个月。 currentMonthIndex是当前月份0到11的索引。

var remainder = (currentMonthIndex + direction) % 12; 
currentMonth = monthNamesArray[Math.floor(remainder >= 0 ? remainder : remainder + 12)]; 
+0

酷!那是我的下一步! :) – 2014-10-06 07:13:34