ฉันจะรับองค์ประกอบ tr ทั้งหมดที่ไม่มีแอตทริบิวต์ id ได้อย่างไร
<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>
ขอบคุณ
ฉันจะรับองค์ประกอบ 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 + ']');
}