img要素の読み込み完了後に非表示要素を表示したい
img要素の読み込み完了を検知し、非表示要素を表示するため、onload=""を使用してCSSの生成を行いたいのですが、いまいち方法が理解できておりません。
<style>
セレクタ {display: none;}
</style>
上記のCSSを、onloadを使用して
<style>
セレクタ {display: block;}
</style>
に上書きしたいと思っています。
onloadの処理でdisplay:blockを生成する事は可能でしょうか?
知識のある方お手数をお掛けいたしますが、ご教授いただける幸いでございます。
以下は現在のコードでございます。
.main_off {
display: none;
}
.main_on {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
function main_on(){
// イメージが読み込まれた!
document.getElementsByTagName('div').className = "main_on";
}
</script>
<div class='onload-on-img-onload main_off' onload="main_on();">
<img src="http://i.imgur.com/PWSOy.jpg" />
</div>
<div class='onload-on-img-onload main_off' onload="main_on();">
<img src="http://i.imgur.com/PWSOy.jpg" />
</div>
<script>
// ## ユーティリティ ##
// div をスキャンして画像読み込み後に onload を呼び出すコード
var divs = $(".onload-on-img-onload");
divs.each(function (idx, div) {
var imgs = $(div).find("img");
var count = imgs.length;
if (count==0 && div.onload)
div.onload.call(div, count);
var loaded = 0;
imgs.one("load", function (e) {
loaded++;
if (loaded === count && div.onload)
div.onload.call(div, count);
}).each(function () {
if (this.complete) $(this).load();
});
});
</script>
<body>
上記コードは(div内はかなりフェイクいれています)色々なサンプルを混ぜ合わして作っている為、私自身理解しきれていません。
ですので、まったく手法が変わっても構いませんので、どうぞよろしくお願いいたします。