>  기사  >  웹 프론트엔드  >  JavaScript의 DOM 요소에서 보다 정확한 CSS 경로를 생성하는 방법은 무엇입니까?

JavaScript의 DOM 요소에서 보다 정확한 CSS 경로를 생성하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-25 15:09:02817검색

How to Generate More Accurate CSS Paths from DOM Elements in JavaScript?

DOM 요소에서 정확한 CSS 경로 생성

JavaScript에서는 DOM 요소에서 CSS 경로를 생성하는 것이 일반적인 작업입니다. 이 문제를 해결하기 위해 인기 있는 함수인 cssPath가 존재합니다. 그러나 n번째 하위 선택기와 같은 중요한 세부 정보가 부족한 경로가 생성되는 경우가 많습니다.

제공된 코드는 해결책을 제공합니다.

<code class="js">var cssPath = function(el) {
  if (!(el instanceof Element)) return;
  var path = [];
  while (el.nodeType === Node.ELEMENT_NODE) {
    var selector = el.nodeName.toLowerCase();
    if (el.id) {
      selector += '#' + el.id;
      path.unshift(selector);
      break;
    } else {
      var sib = el, nth = 1;
      while (sib = sib.previousElementSibling) {
        if (sib.nodeName.toLowerCase() == selector)
          nth++;
      }
      if (nth != 1)
        selector += ":nth-of-type(" + nth + ")";
    }
    path.unshift(selector);
    el = el.parentNode;
  }
  return path.join(" > ");
};</code>

원본 기능에 대한 개선 사항:

  • 조기 종료 방지: 요소가 아닌 노드를 만나면 원래 기능이 중지되어 잘못된 경로가 발생합니다. 개선된 버전에서는 정확도 향상을 위해 탐색을 계속합니다.
  • 명확성 강조: 일반 :nth-child() 대신 nth-of-type() 선택기를 사용하면 생성된 경로가 다음과 같이 됩니다. 더 정확하고 사람이 읽을 수 있습니다.
  • ID가 있는 상위 요소에서 중지: 향상된 기능은 할당된 ID가 있는 첫 번째 상위 요소를 발견하면 중지되어 경로를 간소화하고 가독성을 높입니다.

위 내용은 JavaScript의 DOM 요소에서 보다 정확한 CSS 경로를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.