ホームページ >ウェブフロントエンド >CSSチュートリアル >JavaScript で CSS カウンター値にアクセスするにはどうすればよいですか?

JavaScript で CSS カウンター値にアクセスするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 14:43:11729ブラウズ

How to Access CSS Counter Values in JavaScript?

JavaScript で CSS で生成されたコンテンツにアクセスする方法

問題:

CSS では、 counter および content プロパティは、図の番号付け (「図 1.1」) などのカスタム コンテンツを生成します。画像。疑問が生じます: JavaScript を使用してこのコンテンツにプログラムでどのようにアクセスできますか?

答え:

ライブ カウンター値へのアクセス

残念ながら、JavaScript には、CSS によって生成されたライブ カウンター値にアクセスするための直接インターフェイスはありません。 getComputedStyle を介してこれらを取得しようとすると、実際の実行時の値ではなく、スタイルシートで宣言された値のみが返されます。

DOM レベル 2 スタイル カウンター インターフェイス (最初は有望に見えました) にも、現在のカウンター値を取得するプロパティがありません。 .

代替アプローチ

ライブカウンター値に直接アクセスするためこれは実現不可能です。代わりのアプローチは、JavaScript を使用してブラウザー独自のカウンター メカニズムを複製することです。次のスクリプトを使用できます:

window.onload = function () {
  // Get all counter elements
  var counters = Node_getElementsByClassName(document.body, 'counter');

  // Initialize indices
  var indices = [];
  for (var counteri = 0; counteri < counters.length; counteri++) {
    // Get counter level
    var counter = counters[counteri];
    var level = Element_getClassArgument(counter, 'level');

    // Update indices
    while (indices.length <= level) indices.push(0);
    indices[level]++;
    indices = indices.slice(level + 1);

    // Create text node for figure number
    var text = document.createTextNode('Figure ' + indices.join('.'));

    // Insert figure number before counter element
    counter.parentNode.insertBefore(text, counter.nextSibling);

    // If counter has an ID, add figure number to links
    if (counter.id !== '') {
      for (var linki = document.links.length; linki > 0; linki--) {
        var link = document.links[linki];
        if (link.hostname === location.hostname && link.pathname === location.pathname && link.search === location.search && link.hash === '#' + counter.id) {
          // Create text node for link number
          var text = document.createTextNode('(' + indices.join('.') + ')');

          // Insert link number after link
          link.parentNode.insertBefore(text, link.nextSibling);
        }
      }
    }
  }
};

このスクリプトは、見出しと図の要素に図番号を追加し、それらの見出しと図を参照するリンクに対応する番号を追加します。

以上がJavaScript で CSS カウンター値にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。