JavaScript で DOM 要素からより正確な CSS パスを生成するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-25 15:09:02
オリジナル
827 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!