li[data-text*="Hoge"]
のノリで li:inner-text*="Hoge"
と書いてみたい。
代わりに JS で cssInnerText('li', '*=', 'Hoge', 'color: red')
という風に書けるようにしてみた。
cssInnerText()
を呼び出したタイミングで style.cssText
にスタイルを書き込むようにしている。その仕組みのため、以下のような問題・制約がある。
style.cssText
に追記するやり方のため、CSS の優先度が高め。カスケードの調整が微妙かも?
:hover
、:focus
などの擬似クラス、::before
などの擬似要素を操作したい場合に対応できない
style.cssText
を使ってスタイルを書き込むのではなく、属性セレクタをでっちあげるようなやり方じゃないと無理かな:has()
の Polyfill で属性セレクタを使うやり方をしているconsole.log
や console.warn
を表示・非表示する設定を何かしたい。表示させたいときだけ引数で渡してもらうのが良いのかなぁ?ちなみに、style.cssText
は上書きされたプロパティがよしなに消えるので、呼び出しただけゴミが積み重なるような事態は起きない模様。