コンテンツ生成後にスタイルタグを変更したい。style タグにスタイルを追加するにはどうすればよいですか? 私は使用してみました:
document.getElementById('style').appendChild(styleContents);
しかし、それはうまくいきませんでした
コンテンツ生成後にスタイルタグを変更したい。style タグにスタイルを追加するにはどうすればよいですか? 私は使用してみました:
document.getElementById('style').appendChild(styleContents);
しかし、それはうまくいきませんでした
スタイルタグに css を追加しようとしている可能性があります。これは、次を使用して実現できます。
document.getElementsByTagName('style')[0].innerHTML=""; //some css goes here
以下も使用できます。
document.styleSheets[0].cssText = ""; //some css goes here
これは古い質問であることは知っていますが、要素にスタイリングを直接適用せずに、これらも動的に更新する方法を見つけようとしています。
スタイル タグに ID を指定して選択すると、シート プロパティを使用してその CSS にアクセスできます。
ここから、必要なものを更新できます。タグ内の CSS 全体を置き換えるか、個々のクラスを更新します。
document.getElementById('somestyletagid').sheet.cssRules[0].selectorText
これがクラス セレクターです。
document.getElementById('somestyletagid').sheet.cssRules[0].style
これらはすべて、そのクラスの個々の css プロパティです。
これを行うことで、背景色を更新できます。
document.getElementById('somestyletagid').sheet.cssRules[0].style.backgroundColor = 'red'
これは、html 内の任意のスタイル タグにアクセスする方法です。残念ながら、私が見つけることができる各 CSSStyleRule に厳密に一意の ID はありません。最も近いのは selectorText ですが、明らかにそれを繰り返すことができます。いずれにせよ、少なくとも私のニーズでは、これはまさに私が必要としているものです。
document.styleSheets を使用して、通常と同じ方法でそれらにアクセスすることにより、含まれている CSS ファイルを更新することもできます。
document.styleSheets[0].href
インクルードされた css ファイルの href。
document.styleSheets[0].cssRules
シート内のすべてのクラス。
これが誰かを助けることを願っています!
要素には子要素がありません。style
その内容は定義上、(HTML に関する限り) テキストのみであるためです。ただし、これは、innerHTML
プロパティを使用してコンテンツに追加できることを意味します。要素に が<style id=foo>
ある場合は、次のように記述します。
document.getElementById('foo').innerHTML += styleContents;
http://jsfiddle.net/fttS5/1/で簡単な例をまとめました。
HTML の他の要素と同じように、スタイル タグに id を付けることができます。
<style id="style"></style>
これで、appendChild で試したコードを取得して、簡単な変更を 1 つ追加できます。
document.getElementById('style').appendChild(document.createTextNode(styleContents));
これでうまくいくはずです。幸運を。
私の以下の回答としてリストされている innerHTML メソッドを使用することもできます。
これを試して
var currentElement = document.getElementById('style');
var currentStyle = currentElement.getAttribute('style');
var stylePieces = [];
if(currentStyle) {
stylePieces = currentStyle.split(';');
}
stylePieces.push('new-style: true;');
currentElement.setAttribute('style', stylePieces.join(';'));
jQuery ライブラリを使用して、新しい CSS を DOM 要素に直接追加してみませんか?
例えば:
<script>
$(document).ready(function(){
$("#an_element").css("border", "1px solid #333");
});
</script>
<div id="an_element">Test</a>
これにより、要素の周囲に ID「an_element」の境界線が追加されます。