Como posso obter todos os elementos tr sem o atributo id?
<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>
obrigado
Bem direto:
//tr[not(@id) and not(@class)]
Isso lhe dará todos os tr
elementos sem os atributos id
e class
. Se você quiser que todos os tr
elementos não tenham um dos dois, use em or
vez de and
:
//tr[not(@id) or not(@class)]
Quando atributos e elementos são usados dessa forma, se o atributo ou elemento tiver um valor, ele será tratado como se fosse verdadeiro. Se estiver faltando, será tratado como se fosse falso.
Se estiver procurando por um elemento que tenha classe, a
mas não tenha classe b
, você pode fazer o seguinte.
//*[contains(@class, 'a') and not(contains(@class, 'b'))]
Ou se você quiser ter certeza de não corresponder a parcial.
//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and
not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]
Você pode tentar //tr[not(@id)]?
if (elm.hasAttribute('id')) {
//if id - implement here
} else if (elm.hasAttribute('class')) {
//if class - implement here
} else {
for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling) {
if (sib.localName == elm.localName)
i++;
};
segs.unshift(elm.localName.toLowerCase() + '[' + i + ']');
}