在javascript中生成两个DOM元素(而不是两个字符串)的差异
Generating a diff of two DOM elements (rather than two strings) in javascript
这非常适用于字符串:http://ejohn.org/projects/javascript-diff-algorithm/
我曾经做过字符串差异服务器端(在 ruby 中(,但真的很难考虑强制标签结构,就像在表中一样。
我只对非表格html所做的就是在添加和删除的文本/内联元素周围添加跨度。在您开始尝试区分 TD 组之前,该方法效果很好。
那么,是否有任何Javascript库可以生成带有表格的视觉差异?
更新/示例:
Table1: Table 2:
<table> <table>
<tr> <tr>
<td>sometext</td> <td>some <b>text</b></td>
<td>moretext</td> <td><b>more text</b></td>
</tr> <tr>
</table> </table>
结果表(只是一种可能性,因为有很多方法可以显示差异(
<table>
<tr>
<td>some<del>text</del><add> <b>text</b></add></td>
<td><del>more text</del><add><b>more text</b></add></td>
</tr>
</table>
这是我最初的尝试。它使用您引用的差异库,并假定这些表具有相同的维度。
$(document).ready(function() {
$("#tbl1 tbody").children("tr").each(function(rownum, tr) {
_tr = $("<tr>");
tr2 = $($("#tbl2 tbody tr").get(rownum));
$(tr).children("td").each(function(colnum, td) {
text = $(td).html();
text2 = $($(tr2).children("td").get(colnum)).html();
_tr.append("<td>" + diffString(text, text2) + "</td>");
});
$("#results").append(_tr);
});
});
http://jsfiddle.net/SPSJb/
我最近实现了 https://github.com/teamwork/visual-dom-diff,它比较了 2 个 DOM 节点并生成了一个DocumentFragment
,所有差异都包装在 <ins>
中,并根据需要<del>
元素。它认为它可能适合您的用例。
相关文章:
- jsf中两个字符串的颜色代码差异
- 可以't在JavaScript中比较两个字符串
- jQuery在两个字符串标识符之间选择HTML
- 为什么脚本标记被分解为两个字符串
- 比较Javascript中的两个字符串时出错
- 如何检查两个字符串是否具有相同的字符,包括特殊字符
- Javascript正则表达式来比较两个字符串
- 使用Javascript获取两个字符串之间的字符串数组
- 如何比较两个字符串并删除jquery中的元素
- 如何在 javascript 中使用正则表达式在其他两个字符串之间找到一个字符串
- 删除两个字符串正则表达式之间的所有内容
- Javascript Regex匹配两个字符串之间的子字符串,但子字符串可以包含DOT(.)
- 在jQuery或JavaScript中获取两个字符串之间的文本
- 为什么不是'当试图使用Ajax和外部PHP文件发布内容时,我的表单工作不正常,该文件接收两个字符串
- 比较javascript/jquery中的两个字符串
- 如何在javascript中无空格地追加两个字符串
- 函数,返回javascript中两个字符串数组的差值
- 在javascript中组合使用连字符连接的两个字符串
- 如何在anular.js视图中比较两个字符串
- 替换两个字符串之间的多行文本