我有以下示例html:https://jsfiddle.net/pgd8e46b/1/
我要做的是让用户点击“available_widgets”表中的一行,如果它不在“existing_widgets”表中,则添加它并执行其他操作。
我有逻辑来获取适当的表并开始循环...
var check_for_duplicates = function (row_id) {
var table = document.getElementById('existing_widgets');
var rows = table.getElementsByTagName('td');
for (var i = 0, len = rows.length; i < len; i++) {
console.log(i);
}
console.log(rows);
return true;
}
但我不知道如何将ID字段与传入的id进行比较。 我仍然必须编写从传递给check_for_duplicates()方法的id中去掉“row_”前缀的逻辑。
任何建议都将不胜感激。
答案 0 :(得分:1)
我认为你要找的是返回元素中的id
属性。
rows[i].id
应该在循环中为您提供所需内容。
去除前缀:rows[i].id.replace('row_', '')
这将创建一个新的字符串供您比较。
答案 1 :(得分:0)
如果使用jQuery按id:
查找小部件行,则可以简化check_for_duplicates
函数
$('#available_widgets').on('click', 'tr', function () {
if (check_for_duplicates(this.id)) {
return false;
} else {
alert('otherwise, do other stuff');
}
});
var check_for_duplicates = function (row_id) {
return !!$('#existing_widgets').find('#' + row_id.replace('row_', '')).length;
}
答案 2 :(得分:0)
这是JS中的一个工作函数。我还建议在existing_widgets
表格上使用其他一些前缀,可能是existing_row_#
,然后您只需要修改replace()
组件。
function check_for_duplicates(row_id) {
var table = document.getElementById('existing_widgets');
if (document.getElementById(row_id.replace('row_', ''))) {
console.log(row_id + ' is a duplicate');
return true;
} else {
console.log(row_id + ' is not a duplicate');
return false;
}
}