Làm cách nào để lấy tất cả các phần tử tr mà không có thuộc tính id?
<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>
Cảm ơn
Câu trả lời:
Khá đơn giản:
//tr[not(@id) and not(@class)]
Điều đó sẽ cung cấp cho bạn tất cả các tr
yếu tố thiếu cả hai id
và class
thuộc tính. Nếu bạn muốn tất cả các tr
yếu tố thiếu một trong hai, hãy sử dụng or
thay vì and
:
//tr[not(@id) or not(@class)]
Khi các thuộc tính và phần tử được sử dụng theo cách này, nếu thuộc tính hoặc phần tử có một giá trị thì nó được coi là đúng. Nếu thiếu nó được coi như là sai.
Nếu bạn đang tìm kiếm một phần tử có lớp a
nhưng không có lớp b
, bạn có thể làm như sau.
//*[contains(@class, 'a') and not(contains(@class, 'b'))]
Hoặc nếu bạn muốn chắc chắn không khớp từng phần.
//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and
not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]
Bạn có thể thử //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 + ']');
}