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