質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1395閲覧

cssの読み込まれるタイミング

yuuyu

総合スコア1139

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

1クリップ

投稿2020/03/02 16:13

###やりたいこと
ページ読み込み時に、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を読み込んだ後に実行するのはどのイベント(もしくは関数)が適切なのでしょうか?

x_x👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

DOMContentLoadedはスタイルシートの読み込みを待ちません。おそらくloadなら完了しているのでは。

【Window - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Window#ロード・アンロードイベント

DOMContentLoaded

文書が完全に読み込まれて解析されたときに、スタイルシート、画像、サブフレームの読み込みが完了するのを待たずに発生します。

load
スタイルシートや画像などの依存するすべてのリソースを含め、ページ全体の読み込みが完了したときに発生します。

【フロントエンドのパフォーマンスを徹底解説!ブラウザの気持ちで理解するHTML/Javascript/CSSの話 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]】
https://techblog.raccoon.ne.jp/archives/53180280.html

投稿2020/03/02 16:28

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuuyu

2020/03/03 02:36

ありがとうございます。 domの完了がcssomの完了とは限らないのですね。。 cssomの完了イベントがあればいいのですが、なさそうなのでloadで試してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問