javascript - 如何执行此行一次?
问题描述
我在这里得到了这条线,我真的很努力地执行一次离线部分。
它显示一次,当用户在线时。没关系。但是当用户离线时,它会--- is offline
在控制台中每 10 秒显示一次。我只想说is offline
用户何时离线,然后停止,直到它再次在线。请帮帮我。
window.setInterval(function() {
if (document.getElementById('statusIndexer') == null)
return;
for (var i = 0; i < WLAPStore.Presence.models.length; i++) {
var m = WLAPStore.Presence.models[i];
var id = 'p' + m.id.slice(0, -5);
var clientBox = document.getElementById(id);
if (clientBox !== null) {
var img = clientBox.getElementsByTagName('img')[0];
img.classList.remove('isOnline');
if (m.isOnline) {
console.log(id + ' is online');
clientBox.parentNode.prepend(clientBox);
img.classList.remove('isOffline');
img.classList.add('isOnline');
} else {
console.log(id + ' is offline');
clientBox.parentNode.prepend(clientBox);
img.classList.remove('isOnline');
img.classList.add('isOffline');
(document.getElementById('statusIndexer') == null)
return;
}
}
}
}, 1000);
解决方案
使用全局变量来保存以前的状态,并在记录消息之前检查它是否已更改。
var onlineState = {};
window.setInterval(function() {
if (document.getElementById('statusIndexer') == null)
return;
for (var i = 0; i < WLAPStore.Presence.models.length; i++) {
var m = WLAPStore.Presence.models[i];
var id = 'p' + m.id.slice(0, -5);
var clientBox = document.getElementById(id);
if (clientBox !== null) {
var img = clientBox.getElementsByTagName('img')[0];
img.classList.remove('isOnline');
if (m.isOnline) {
if (m.isOnline !== onlineState[id]) {
console.log(id + ' is online');
}
clientBox.parentNode.prepend(clientBox);
img.classList.remove('isOffline');
img.classList.add('isOnline');
} else {
if (m.isOnline !== onlineState[id]) {
console.log(id + ' is offline');
}
clientBox.parentNode.prepend(clientBox);
img.classList.remove('isOnline');
img.classList.add('isOffline');
(document.getElementById('statusIndexer') == null)
return;
}
onlineState[id] = m.isOnline;
}
}
}, 1000);
推荐阅读
- python - 具有自定义矩阵乘法的 tf.keras 自定义密集层没有梯度
- java - TaskScheduler 队列任务spring
- php - 在 woocommerce 存档页面和加售/相关产品中显示自定义产品价格
- objective-c - 如何从 lldb 中的 objc 访问 swift 便利变量?
- sql - 在 SELECT DISTINCT ON 语句中加入另一个带有条件的表 Postgresql
- arrays - 如何为 Numpy 数组中的每个项目设置最小值和最大值?
- php - PHP关联数组值替换字符串变量
- sql-server - 报表生成器参数 LIKE 多个值
- sharepoint - 将 SP 2016 wsp 部署到 SP 2019 但导致 Add-SP 解决方案出错
- excel - 避免在 Excel 中循环引用