Як я можу отримати всі елементи tr без атрибута id?
<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>
Дякую
Відповіді:
Досить просто:
//tr[not(@id) and not(@class)]
Це дасть вам все tr
елементи , відсутні як id
і class
атрибути. Якщо ви хочете, щоб у всіх tr
елементах бракувало одного з двох, використовуйте or
замість and
:
//tr[not(@id) or not(@class)]
Коли атрибути та елементи використовуються таким чином, якщо атрибут або елемент має значення, це трактується так, ніби це правда. Якщо він відсутній, це розглядається як неправда.
Якщо ви шукаєте елемент, який має клас, a
але не має його b
, ви можете зробити наступне.
//*[contains(@class, 'a') and not(contains(@class, 'b'))]
Або якщо ви хочете бути впевненими, що не збігаються частково.
//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and
not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]
Чи можете ви спробувати //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 + ']');
}