我有一个动态生成的HTML表格。它不仅会改变纯内容,还会根据具体情况改变列名。
但是可能出现的所有表格中有一个共同点 - 以下列名称中的一个,两个或全部:
Vorname (名字), Nachname (姓氏),姓名(姓名)
现在我想检查这些列是否有重复项。然而,我想要尝试遵循一条链,清楚地证明:
"检查列名字,姓氏,名称中的所有值。如果列中的一个或两个不存在,则可以忽略它,并使用现有的一列或多列(例如,只显示名字和姓氏)。
在列中找到重复条目,这些行获取CSS属性' background-color:yellow;。
但是,只有当行的名字和姓氏相同或甚至是名字和名字时,才能识别重复值。取决于存在哪些列。
一个小例子:
<table>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
<tr>
<td>John</td>
<td>Mc Doe</td>
</tr>
</table>
- &GT;由于只有第一个(在此示例中,第一个名称列)与(John)匹配,但第二列(姓氏或名称)不同,因此不会将其识别为重复行。< / p>
不幸的是,我还不太适合JavaScript / jQuery,所以我需要专家帮助=)
答案 0 :(得分:1)
使用$ .inArray()如果找到它将返回-1。您应该对name
进行处理,例如修剪空格,全部小写,以便进行正确比较。
var allName = [];
var dupicateName = [];
$('td').each(
function(index, el) {
var name = $(el).text();
if(jQuery.inArray(name, allName)===-1) {
allName.push(name);
} else {
dupicateName.push(name);
}
}
);
console.log(dupicateName);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
<tr>
<td>John</td>
<td>Mc Doe</td>
</tr>
</table>
<hr/>
&#13;
答案 1 :(得分:0)
怎么样:
function highlightDuplicateRows(selector) {
var index = {},
getText = function () {
return $.trim( $(this).text() );
};
$(selector).find("tr").each(function (tr) {
var rowKey = $(this).find("td").map(getText).toArray().join("|");
if (index.hasOwnProperty(rowKey)) {
index[rowKey].push(this);
} else {
index[rowKey] = [this];
}
});
$.each(index, function (rowKey, rows) {
$(rows).toggleClass("highlight", rows.length > 1);
});
}
highlightDuplicateRows("#test");
&#13;
.highlight {
background-color: yellow;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="test">
<tr>
<td>John</td>
<td>Doe</td>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
<tr>
<td>John</td>
<td>Mc Doe</td>
</tr>
</table>
&#13;