JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://files.cnblogs.com/jscode/diff_match_patch.js"></script>
<div class="test">
<div id="oldStr" class="text">the stackoverflow question and answer version control is very well,i want to do this use javascript,but i don't know how to start,who can give some suggestion?thanks</div>
<div id="newStr" class="text">Stack Overflow's diff view is very good. I want to do this using javascript,but i don't know how to start,who can give some suggestion?thanks</div>
</div>
<input type="button" value="Test" onclick="launch()" />
<div class="test">
<div class="text" id="outputOldStr"></div>
<div class="text" id="outputNewStr"></div>
</div>
CSS
.test
{
margin:10px 0;
zoom:1;
}
.test:after
{
height:0;
clear:both;
content:"";
visibility:hidden;
display:block;
}
.text
{
width:300px;
float:left;
margin-right:10px;
border:1px solid #F60;
padding:10px;
min-height:80px;
}
.text-del
{
text-decoration: line-through;
color: #A82400;
background-color: #E5BDB2;
}
.text-add
{
background: #D1E1AD;
color: #405A04;
}
JavaScript
var dmp = new diff_match_patch();
function launch() {
var text1 = document.getElementById('oldStr').innerHTML;
var text2 = document.getElementById('newStr').innerHTML;
dmp.Diff_EditCost = 8;
var d = dmp.diff_main(text1, text2);
dmp.diff_cleanupEfficiency(d);
var oldStr = "",
newStr = "";
for (var i = 0, j = d.length; i < j; i++) {
var arr = d[i];
if (arr[0] == 0) {
oldStr += arr[1];
newStr += arr[1];
} else if (arr[0] == -1) {
oldStr += "<span class='text-del'>" + arr[1] + "</span>";
} else {
newStr += "<span class='text-add'>" + arr[1] + "</span>";
}
}
document.getElementById('outputOldStr').innerHTML = oldStr;
document.getElementById('outputNewStr').innerHTML = newStr;
}