如何遍历HTML表中的行以查找特定值?

时间:2015-05-13 19:42:45

标签: javascript jquery html

我有以下示例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_”前缀的逻辑。

任何建议都将不胜感激。

3 个答案:

答案 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;
    }
 }