ページが読み込まれた時に表示していたテキスト、或いは画像を

一定時間が経過した後、自動的に変更する。

そんな動きをjavascriptで実現させるべくチャレンジしました。

IEの意味不明な動作があるため、その無理やりの応急処置です。

=====================================
その意味不明な動作とは、
カート機能のあるサイトで、数量を指定し「カートへ入れる」ボタンを押すと、
何故か指定した数量の倍の数量がカートへ入ってしまう。
数量管理はsessionを使っているのだが、
どこかでうまくsessionのクリアが出来ていないのかもしれない。
しかし、「カートへ入れる」ボタンのあるページへ遷移した後、
ページが最後まで読み込まれてから4秒以上経過すると、
上記のような問題は決して起こらない。
よって4秒以上経過してから「カートへ入れる」ボタンをクリック出来るように、
一定時間経過後に画像を表示させる応急処置をすることにした。
現象はIE6と7のみ発生し、他のブラウザでは上記のような問題は皆無。
そして原因は未だ不明。
=====================================

そしてまず自分でやってみた。
<!---------外部ファイル--------->
var aaa=”aaaaaaaaaaaaaaa”;
var bbb=”bbbbbbbbbbbbbbb”;

function abpen(){
document.write(aaa);
setTimeout(’document.write(bbb)’,5000);
}<!---------外部ファイル--------->
<html>
<head>jsのsrcを指定</head>
<body>
他のHTMLタグは省略しています。
<script type=”text/javascript”>
abpen();
</script>
</body>
</html>

これだと、aaaは問題なく表示されているのだが、

setTimeoutでbbbを読み込むとページが切り替わってしまい、

白紙のページにbbbが表示されてしまった。

要因は特定出来ていないが、

document.writeの使い方がよくなかったのかもしれない。

新しいdocument.writeに上書きされてしまい、新しく読み込まれてしまうのかも。

で、次の方法。

<!---------外部ファイル--------->
(function(){
setTimeout(function(){
var aaa = document.getElementById(”hoge”);
var bbb = ”./images/cartni.gif”;
aaa.src = bbb;
},5000);
})();
<!---------外部ファイル--------->

<html lang=”ja”>
<head>
<title>sample</title>
</head>
<body>
<p><img id=”hoge” src=”aaaaaaaaaaaaaaa.jpg” alt=”aaa画像”></p>
</body>
</html>
こうすると実現できた。

自分なりの解釈としては

getElementByIdでIDを指定し、
HTMLタグでそのIDを読み込む。これはdivでもpでもいいと思う。
んで、その指定したIDのsrc部分みbbbを代入する。
setTimeoutを使い、時間差でそのfunctionを機能させる。

これは知恵袋にだして返ってきた回答を修正し、

実際に動かせるようにしてみたソース。

こんなんで2日もかかり、しかも自分の力だけで解決出来なかった。。。

くやしいね。

とりあえずもう少しjs勉強したいな。