Javascript 转到颜色等于的表格行

Javascript 转到颜色等于的表格行,javascript,jquery,html,Javascript,Jquery,Html,我有一个表格,需要自动滚动到突出显示的行,因此我想到了以下代码: var container = $('#table_id'), scrollTo = $("table tr background-color:contains('#FFCC66')"); container.scrollTop( scrollTo.offset().top - container.offset().top + container.sc

我有一个表格,需要自动滚动到突出显示的行,因此我想到了以下代码:

            var container = $('#table_id'),
        scrollTo = $("table tr background-color:contains('#FFCC66')");
        container.scrollTop(
            scrollTo.offset().top - container.offset().top + container.scrollTop()
        );
其中“#FFCC66”是我高亮显示的行的背景色

这将返回错误:

Error: Unable to get property 'top' of undefined or null reference

为什么它不工作?

我认为应该向突出显示的元素添加一个类,然后执行以下操作:

var container = $('#table_id'),
    scrollTo = $("table tr.highlighted");

container.length && container.scrollTop(
        scrollTo.offset().top - container.offset().top + container.scrollTop()
);
或者按照你的方式,这应该是可行的:

var container = $('#table_id'),
    scrollTo = $("table tr").filter(function() {
        return $(this).css('background-color').toLowerCase() == '#ffcc66';
    });

container.length && container.scrollTop(
        scrollTo.offset().top - container.offset().top + container.scrollTop()
);

您可以查看此代码段,它会在一秒钟后自动滚动到所选行:

window.setTimeout(scrollToSelected,1000);
选择的函数(){
var container=$(“#表_id”),
scrollTo=$(“表tr.selected”);
scrollTo(0,scrollTo.offset().top-container.offset().top);
}
td{
高度:50px;
}
选定{
背景色:#AAAAA;
}
tr{
背景色:#000000;
}
tr,表{
宽度:100%;
}


显示此relatesTry控制台记录每个变量的html,以查看它们是否存在
console.log(scrollTo,container)
是“table tr background color:contains(“#FFCC66”)”甚至是一种有效的搜索方式?根据jquery,contains用于包含文本,而不是属性。您不需要查看style属性是否包含它吗?如果它被设置好了?我的假设是这样的:虽然其他人可能会对如何实现您的要求给出很好的答案,但我强烈建议以其他方式标记该行,以指示该行已高亮显示——可能使用类名或数据属性。如果您直接对照颜色进行检查,您的代码将面临将来难以维护的风险,例如,如果您决定更改站点的颜色方案。
var 
  container = $('#table_id'),
  scrollTo = undefined;
$("table tr").each(function() {
  if ($(this).css('background-color').indexOf('#FFCC66') !== -1) {
    scrollTo = $(this);
  }
});
if (scrollTo) {
//--> continue
}