簡體   English   中英

如何修復我的代碼以僅在 javascript 中運行一次

[英]How can I fix my code to run only once in 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) {自動加入會議的擴展但是你肯定注意到了這個中的一個小問題condition 它每秒嘗試加入會議,直到 if 條件匹配。

請給我一些解決方案,讓 function 在 if 語句中只運行一次

這看起來就像使用另一種機制來確保 class 只加入一次一樣簡單。

我的建議是使用一個標志來表示這一點,如下所示:

// 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 否則你會在每次循環運行時覆蓋結果。

這只需在嘗試加入 class 之前檢查hasJoined是否為 false 即可。如果hasJoined尚未設置並且是時候加入 class, hasJoined將被設置並且joinClass() function 將執行。

hasJoined更改為 true 可防止多次嘗試加入 class。

嘗試將您的if語句放在 1 分鍾的時間間隔內,這樣它只會在 1 分鍾間隔后檢查您的條件,並且還會減少不必要的代碼執行。

考慮到會議允許遲到1分鍾的情況:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM