代码只能在小提琴和浏览器中使用,但不能在SharePoint 2013中使用

时间:2018-10-24 16:58:01

标签: javascript jquery sharepoint

https://jsfiddle.net/rurounisena/zrab1u8q/74/ 更新的链接

上面的小提琴看起来和确实满足我的需要。 HTML是完全从共享点中的表复制而来的。但是,当我尝试将此代码jslink到实际的共享点页面时,会发生以下情况。

link to sharepoint result img

这里的代码就是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:

  • -52
  • NaN
  • -30
  • -38

在共享点的第一个if语句之后记录差异:

  • -52
  • -43
  • NaN
  • -42
  • -32
  • -31
  • NaN
  • -32
  • -49
  • NaN
  • -45
  • -49
  • -46
  • -35
  • -30
  • -38
  • -56
  • -49
  • -46
  • -44
  • -39
  • -38
  • -36
  • -32
  • -56
  • -46

1 个答案:

答案 0 :(得分:0)

此:

j( "span.ms-noWrap" )

在您的页面上还有其他内容。这是SharePoint中的通用类,不能以这种方式依赖选择器。由于这个和其他原因,从SharePoint的输出中“读取”数据被认为是次优的。更好的解决方案可能是直接通过对象模型从服务器获取项目。

您可以找到有关该here的Microsoft指南。