Код работает в скрипте и браузере, но не в sharepoint 2013 - PullRequest
0 голосов
/ 24 октября 2018

https://jsfiddle.net/rurounisena/zrab1u8q/74/ ОБНОВЛЕННАЯ ССЫЛКА

Вышеприведенная скрипка выглядит и делает именно то, что мне нужно.HTML-код копируется именно из таблицы в sharepoint.Однако, когда я пытаюсь связать этот код с реальной страницей sharepoint, происходит следующее.

ссылка на результат sharepoint 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
    });
});

Я не понимаю, почему этот код работает вездекроме sharepoint.Может кто-нибудь помочь или хотя бы указать мне правильное направление?

ОБНОВЛЕНИЕ: регистрация различий после 1-го оператора if в скрипте:

  • -52
  • NaN
  • -30
  • -38

регистрация diffdate после 1-го оператора if в sharepoint:

  • -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 голосов
/ 30 октября 2018

Это:

j( "span.ms-noWrap" )

поднимает что-то еще на вашей странице.Это обычный класс в SharePoint, и на него нельзя полагаться как на селектор;по этой и другим причинам считается неоптимальным «читать» ваши данные из вывода SharePoint.Лучшим решением может быть получение элементов с сервера напрямую через объектную модель.

Вы можете найти руководство Microsoft по этому вопросу здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...