Wie kann ich alle tr-Elemente ohne id-Attribut erhalten?
<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>
Vielen Dank
Antworten:
Ziemlich einfach:
//tr[not(@id) and not(@class)]
Das gibt Ihnen alle tr
Elemente, denen sowohl id
als auch class
Attribute fehlen . Wenn Sie möchten, dass allen tr
Elementen eines der beiden fehlt, verwenden Sie or
anstelle von and
:
//tr[not(@id) or not(@class)]
Wenn Attribute und Elemente auf diese Weise verwendet werden und das Attribut oder Element einen Wert hat, wird es so behandelt, als ob es wahr wäre. Wenn es fehlt, wird es so behandelt, als ob es falsch wäre.
Wenn Sie nach einem Element suchen, das eine Klasse hat , a
aber keine Klasse hat b
, können Sie Folgendes tun.
//*[contains(@class, 'a') and not(contains(@class, 'b'))]
Oder wenn Sie sicher sein möchten, dass Sie nicht teilweise übereinstimmen.
//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and
not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]
Kannst du es versuchen //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 + ']');
}