我有一个 jsp 页面,它为某些 HTML 元素设置了“时间戳”属性。我使用这些“时间戳”的值以格式显示经过的时间 - “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>
您只需将此代码复制粘贴到文本文件中并在浏览器中打开它(仅单击“开始”按钮一次)。
问题是最初我的 div 的值将每秒更新一次(作为代码 - setInterval(setTime, 1000)
)。但慢慢地,更新间隔会减少,值会立即更新。在一分钟内浏览器停止响应。
我不是setInterval
从循环内调用。这里可能有什么问题?
此外,此代码在 IE 中不起作用。