我正在尝试编写一些javascript,以便能够从SharePoint列表的一列中读取日期。例如,如果在我的日期列(MonthNeeded)中日期是03/15,我希望能够检查日期是否为<从今天起30天或从今天起约90天,依此类推。当它检查它时,它将改变与该日期对应的行颜色某种颜色。从今天起不到30天,它将是红色,大于或等于30天,它将是橙色等...
我在Visual Studio中编写了一些代码,因为遗憾的是我不能将SharePoint设计器与我的SP实例一起使用,所以我无法实时测试代码。
这是我到目前为止所做的:
function CheckStatus() {
var x = document.getElementsByTagName("TD") // find all of the TDs
var _dueDate = new Date(ctx.CurrentItem.MonthNeeded)
var now = Date();
var nowPlus30 = new Date();
nowPlus.setDate(now.getDate() + 30);
var nowPlus90 = new Date();
nowPlus.setDate(now.getDate() + 90);
if (_dueDate == '' || !_dueDate) {
return '';
}
var i = 0;
for (i = 0; i < x.length; i++) {
if (x[i].className == "ms-vb2") //find the TDs styled for lists
{
if( _dueDate <= nowPlus30 ) //find the data to use to determine the color
{
x[i].parentNode.style.backgroundColor = 'orange'; // set the color
}
//repeat the above for each data value
if (_dueDate <= nowPlus90) {
x[i].parentNode.style.backgroundColor = 'yellow'; // set the color
}
if (_dueDate > nowPlus30) {
x[i].parentNode.style.backgroundColor = 'red'; // set the color
}
}
}
}
非常感谢任何帮助!
答案 0 :(得分:1)
我过去使用过date.js库来进行条件格式化,请参阅:http://code.google.com/p/datejs/
以下是我的代码片段:
var created = oListItem.get_item('Created').toLocaleDateString();
var dateCreated = Date.parse(created);
var lastWeek = Date.today().add(-7).days();
var newIcon = '';
if (dateCreated >= lastWeek) {
newIcon = "<span class='newIcon'> new!</span>";
}
答案 1 :(得分:0)
您的代码无法正常运行,因为您的JS中存在一些小错误。
首先,检查 nowPlus 是否未定义,但是您尝试使用它,并且该函数会中断,抛出异常。
在设置日期加30天和90天时,您应该使用 nowPlus30 和 nowPlus90 。
另外,请检查以下行:
var now = Date();
您需要将以上行替换为:
var now = new Date();
由于Date是一个需要在使用之前进行初始化的JS对象。
请查看以下小提琴,以供参考:)