나는이 경로를 사용하여 el
경로를 반환합니다. 그러나 때때로이 함수는 페이지에 존재하지 않는 요소를 추가합니다. 이 경우 :스크립트가 페이지에없는 요소를 반환합니다.
<table>
<tr><td></td><tr>
</table>
경로는 table > tbody > tr > td
입니다. 이 기능의 문제점은 무엇입니까? 문제이 tbody
요소 인 경우
function getDomPath(el) {
element = el;
if (!(el instanceof Element)) return;
var path = [];
while (el.nodeType === Node.ELEMENT_NODE && el.id != "jobs") {
var selector = el.nodeName.toLowerCase();
if (el.id) {
selector += '#' + el.id;
}
else if(el.className){
console.log(el.className);
selector += '.' + el.className;
}
else {
var sib = el, nth = 1, count = 1;
while (sib.nodeType === Node.ELEMENT_NODE && (sib = sib.previousSibling) && nth++){
console.log(Node.ELEMENT_NODE)
console.log(el.previousSibling);
console.log(el);
count += $(el).prevAll().size();
};
selector += ":nth-child("+count+")";
}
path.unshift(selector);
el = el.parentNode;
}
return path.join(" > ");
};
선택적 HTML 태그와 용서할 수있는 파서가 DOM에이를 추가하는 방법에 대해 알아야한다고 생각합니다. – Sirko
특정 기사를 가르쳐 주시겠습니까? – Avdept
http://www.w3.org/TR/REC-html40/struct/tables.html#h-11.2.1 - 구문 ('CAPTION ?, (COL * | COLGROUP *), THEAD ?, TFOOT ?, TBODY +)'는'TABLE' 요소의 유효한 자식들만이'CAPTION','COL','COLGROUP','THEAD','TFOOT' 및'TBODY'라는 것을 의미합니다. 또한, 'TBODY'뒤에 오는 '+'는이 요소가 ** 필수 **임을 의미합니다. 'TR' 요소를'TABLE' 안에 직접 넣으면 마크 업은 유효하지 않습니다. –