https://jsfiddle.net/rurounisena/zrab1u8q/74/ 更新的链接
上面的小提琴看起来和确实满足我的需要。 HTML是完全从共享点中的表复制而来的。但是,当我尝试将此代码jslink到实际的共享点页面时,会发生以下情况。
这里的代码就是js。
var j = jQuery.noConflict();
j(document).ready(function(){
j( "span.ms-noWrap" ).wrapInner( "<span class='dates'></span>");
j( "td.ms-vb-lastCell" ).wrapInner( "<span class='status'>
</span>");
});
j(document).ready(function(){
var status = j("span.status");
status.each(function(index) {
if (j(this).text() == "Received") {
j(this).css("text-decoration", "line-through");
}
});
});
j(document).ready(function(){
const orgDates = j('span.dates');
var message = '';
orgDates.each((i, elem) => {
let parts = j(elem).text().split('/');
let dt = new Date(parts[2] ,parts[0] - 1, parts[1]).getTime();
let diffdate = Math.floor((dt - new Date().getTime()) / (86400 * 1000));
if (isNaN(diffdate)) {
return 0;
}
console.log(elem);
if(dt > new Date().getTime() || j(elem).parents('tr').find('span.status').text() == 'Received' ){
var nogood = diffdate;
if(nogood) {
return 0;
}
}
if((diffdate+2) < 1) {
if((diffdate+2) == 0) {
diffdate = (diffdate+1) + ' day ago';
}else {
diffdate = (diffdate+1) + ' days ago';
}
}
diffdate = diffdate.toString().slice(1);
message += j(elem).parents('tr').find("a.ms-listlink").text() + ' ' + j(elem).parents('tr').find("td:nth-child(4)").text() + ' was due ' + diffdate + '<br/>';
});
j.alert({
theme: 'my-theme',
title: 'The following bulk is past the expected received date:',
content: message
});
});
我不明白为什么这段代码除了共享点之外还可以在其他地方使用。有人可以帮忙或至少指向正确的方向吗?
更新: 在小提琴的第一个if语句之后记录diffdate:
在共享点的第一个if语句之后记录差异:
答案 0 :(得分:0)
此:
j( "span.ms-noWrap" )
在您的页面上还有其他内容。这是SharePoint中的通用类,不能以这种方式依赖选择器。由于这个和其他原因,从SharePoint的输出中“读取”数据被认为是次优的。更好的解决方案可能是直接通过对象模型从服务器获取项目。
您可以找到有关该here的Microsoft指南。