###やりたいこと
ページ読み込み時に、cssの動的書き換えをしたい
###コード
css
1div{ 2 color: #000000; 3}
js
1// あるサイト(https://qiita.com/life5618/items/950558e4b72c038333f8)にてお借りしたcssを取得する関数 2function getRuleBySelector(sele){ 3 var i, j, sheets, rules, rule = null; 4 sheets = document.styleSheets; 5 for(i=0; i<sheets.length; i++){ 6 rules = sheets[i].cssRules; 7 for(j=0; j<rules.length; j++){ 8 if(sele === rules[j].selectorText){ 9 rule = rules[j]; 10 break; 11 } 12 } 13 } 14 return rule; 15} 16 17document.addEventListener("DOMContentLoaded", DCL ); //(1) 18 19function DCL(){ 20 getRuleBySelector("div").style.color = "#FF0000"; //(2) 21}
(コードはかなり簡略しています。)
###上記で発生する不具合
(2)のところでdivセレクタを取得し、文字色の変更をしているのだが、状況によりdivセレクタが取得できない。(Cannot read property 'style' of null)
なお、(2)でエラーが発生しても、リロード等せずにコンソールにてDCLを呼び出すとエラーを吐かず実行できるので、"DOMContentLoaded"にて呼ばれた際に、cssの読み込みが終わっていないと思われる。
###質問
DOMツリーの読み込みにはcssは含まれないのでしょうか?
またその場合、cssを読み込んだ後に実行するのはどのイベント(もしくは関数)が適切なのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/03 02:36