Javascript 如何访问使用特定属性而不是类属性的tr标记?

Javascript 如何访问使用特定属性而不是类属性的tr标记?,javascript,cheerio,Javascript,Cheerio,我目前正在JavaScript中使用cheerio,但我不知道如何访问使用某个属性而不是class属性的tr标记 比如说, <tr role="work" class="c1"> <td>task1</td> <td>task2</td> </tr> <tr role="work" class="c2"> <td>task1</td> <td>t

我目前正在JavaScript中使用cheerio,但我不知道如何访问使用某个属性而不是
class
属性的
tr
标记

比如说,

<tr role="work" class="c1">
    <td>task1</td>
    <td>task2</td>
</tr>
<tr role="work" class="c2">
    <td>task1</td>
    <td>task2</td>
</tr>
要获取所有带有
role=work
tr
标记,但它没有按照我的计划工作。

虽然这有点难看(并且没有使用JQuery),但我使用它来检查具有特定角色的元素:

var elements = document.getElementsByTagName("tr");
for(var i=0; i<elements.length; i++) {
    var elem = elements[i];
    if(elem.attributes && elem.attributes.role && elem.attributes.role.value === 'work') {
        ...
    }
}
var elements=document.getElementsByTagName(“tr”);

对于(var i=0;i有两种方法可以做到这一点

没有jQuery 这将给你一个元素列表,我个人喜欢使用

jQuery
这个函数返回的元素不同,因为它们是jquery自己的特殊格式。

您的建议很好,请仔细检查您的输入和codeYep,这真的应该可以工作。当您输出
$(“tr[role='work']”)时,您得到了什么样的选择?什么没有按预期工作?我尝试设置$(“tr[role='work']).each(function(i,el){console.log(“check”);}它不会打印任何东西..如果我试图获取的这个“tr”标记按以下顺序放置,会有什么区别吗?“body,div,div,div,div,div,div,table,tbody,tr”,所以在body的内部,我必须遍历6个div,表中有tbody,其中包含“tr”我试图转到的标记。但是这个tr有唯一的角色。是:$($tr[role='work'])。每个(function(I,el){…}在dom0
attributes
接口上使用命名道具仍然很好。value
?yikes。它可以工作,但这确实不是建议其他人使用的dom交互样式;它缓慢、脆弱且冗长。是的……它真的很难看!JQuery有一个.attr('role'))getter,这可能是获取任意属性的唯一方法(除了选择器,它实际上应该像他发布的那样工作)非常感谢!或者您可以只做
document.queryselectoral('tr').filter(函数(元素){return element.getAttribute('role')=='work';})
如果你真的想走这条路。否则就用我上面的答案。这看起来简单多了,所以我会试试这个。非常感谢!
var elements = document.getElementsByTagName("tr");
for(var i=0; i<elements.length; i++) {
    var elem = elements[i];
    if(elem.attributes && elem.attributes.role && elem.attributes.role.value === 'work') {
        ...
    }
}
document.querySelectorAll('tr[role="work"]');
$('tr[role="work"]')