javascript - 如何修复我的代码在 javascript 中只运行一次
问题描述
var timeToJoin = '18:13';
var today = new Date();
var time = today.getHours() + ":" + today.getMinutes();
var SST = 'https://meet.google.com/rnc-akmx-ubk';
if (time == timeToJoin) {
joinClass();
}
function joinClass() {
location.href = SST;
setTimeout(offMicVideo, 10000);
}
function offMicVideo() {
var video = document.getElementsByClassName('I5fjHe');
var mic = document.getElementsByClassName('oTVIqe');
for (var i = 0; i < video.length; i++) {
video[i].click();
}
for (var i = 0; i < mic.length; i++) {
mic[i].click();
}
}
这是一个自动加入会议的分机但是你肯定已经注意到在这种if (time == timeToJoin) {
情况下发生的一个小问题是当正确的时间到来时分机尝试加入会议但是根据 if 条件它尝试加入会议每个第二个直到 if 条件匹配。
请给我一些解决方案,让 if 语句中的函数只运行一次。
解决方案
这看起来就像使用另一种机制来确保类只加入一次一样简单。
我的建议是使用一个标志来表示这一点,如下所示:
// Declare hasJoined outside of your looped code
var hasJoined = false;
// Inside your looped code
...
var SST = 'https://meet.google.com/rnc-akmx-ubk';
if (!hasJoined && time == timeToJoin) {
hasJoined = true;
joinClass();
}
...
该变量hasJoined
必须在监视时间的循环代码之外声明。否则,您将在每次循环运行时覆盖结果。
hasJoined
这只需在尝试加入课程之前检查是否为假即可。如果hasJoined
还没有设置,是时候加入课程了,hasJoined
将设置并joinClass()
执行功能。
更改hasJoined
为 true 然后防止多次尝试加入课程。
推荐阅读
- javascript - Ruby on Rails 和 JS Web 应用程序中的更新和创建问题
- python - 从“statsmodels”保存拟合模型
- c++ - sf::Clock 发送随机字表示时间
- r - 识别按 ID 和日期分组的数据框中的第一行
- c# - System.AggregateException: '某些服务不能被构造' ASP.net core
- sass - scss 液体混合中的变量
- google-apps-script - 将数据复制到另一个工作表时出现问题
- javascript - NuxtJs - 在另一个插件中调用插件 - vue-gtag
- html - 如何在引导程序中将面板标题(左)和面板与两侧等距对齐
- spring-boot - 如何在Java自动配置中表示自定义spring cloud stream kafka binder配置