Как я могу получить все элементы 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 + ']');
}