Как мне разобрать результат с diffChars как HTML - PullRequest
0 голосов
/ 26 февраля 2020

Мне нужно сравнить текст двух тегов div, которые будут содержать HTML. Результат должен появиться в другом div. Хотя он показывает различия и появляется в div, HTML не анализируется.

<script src="~/js/diff.js"></script>
<script>

comparetxt('divold', 'divnew', 'divresult');

function comparetxt(dold, dnew, dresult) {
    var oldtxt = document.getElementById(dold);
    var newtxt = document.getElementById(dnew);
    var display = document.getElementById(dresult);

    var strnew = newtxt.innerHTML;
    var strold = oldtxt.innerHTML;

    var color = '',
        span = null;

    var diff = Diff.diffChars(strnew, strold),
        fragment = document.createDocumentFragment();

    diff.forEach(function (part) {
        // green for additions, red for deletions
        // grey for common parts
        color = part.added ? 'green' :
            part.removed ? 'red' : 'black';
        span = document.createElement('span');
        span.style.color = color;
        span.appendChild(document
            .createTextNode(part.value));
        fragment.appendChild(span);
    });

    display.appendChild(fragment);
}

This is the result.

1 Ответ

0 голосов
/ 26 февраля 2020

document.createTextNode экранирует html символов. Вы можете использовать внутренний Html для решения вашей проблемы.

РЕДАКТИРОВАТЬ: код добавлен для ясности

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