Як я можу отримати всі елементи 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 + ']');
}