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 trElemente, denen sowohl idals auch classAttribute fehlen . Wenn Sie möchten, dass allen trElementen eines der beiden fehlt, verwenden Sie oranstelle 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 , aaber 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 + ']');
}