'timestamp'属性を特定のHTML要素に設定するjspページがあります。これらの「タイムスタンプ」の値を使用して、経過時間を「10秒前に更新」(ツールチップとして)の形式で表示します。
問題のデモンストレーション用に静的HTMLページを作成しました。これは私のコードです:
<html>
<head>
<script type = "text/javascript">
function setTime() {
var currentDate = new Date();
var elem = document.getElementsByClassName('supermaxvision_timestamp');
if(elem) {
for (var i = 0; i < elem.length; i++) {
var timestamp = elem[i].getAttribute('timestamp');
if(timestamp) {
var startTimestamp = new Date();
startTimestamp.setTime(timestamp)
var difference = currentDate.getTime() -startTimestamp.getTime();
elem[i].innerHTML = difference + " milliseconds";
}
}
}
setInterval(setTime, 1000);
}
</script>
</head>
<body>
<div class='supermaxvision_timestamp' timestamp='1353389123456' ></div>
<div class='supermaxvision_timestamp' timestamp='1353389234567' ></div>
<div class='supermaxvision_timestamp' timestamp='1353389345678' ></div>
<div class='supermaxvision_timestamp' timestamp='1353389456789' ></div>
<div class='supermaxvision_timestamp' timestamp='1353389567890' ></div>
<button onclick="setTime()">start</button>
</body>
</html>
このコードをコピーしてテキストファイルに貼り付け、ブラウザで開くことができます([スタート]ボタンを1回だけクリックします)。
問題は、最初はdivの値が1秒に1回更新されることです(コードとして- setInterval(setTime, 1000)
)。ただし、更新間隔はゆっくりと減少し、値は瞬時に更新されます。そして1分以内にブラウザは応答を停止します。
setInterval
ループ内から呼び出しているのではありません。ここで何が間違っている可能性がありますか?
また、このコードはIEでは機能しません。