Comment puis-je obtenir tous les éléments tr sans attribut id?
<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>
Merci
Réponses:
Assez simple:
//tr[not(@id) and not(@class)]
Cela vous donnera tous les tr
éléments manquant à la fois id
et les class
attributs. Si vous voulez que tous les tr
éléments ne contiennent pas l'un des deux, utilisez à la or
place de and
:
//tr[not(@id) or not(@class)]
Lorsque des attributs et des éléments sont utilisés de cette manière, si l'attribut ou l'élément a une valeur, il est traité comme s'il était vrai. S'il manque, il est traité comme s'il était faux.
Si vous recherchez un élément qui a une classe a
mais pas de classe b
, vous pouvez effectuer les opérations suivantes.
//*[contains(@class, 'a') and not(contains(@class, 'b'))]
Ou si vous voulez être sûr de ne pas correspondre partiellement.
//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and
not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]
Peux-tu essayer //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 + ']');
}