Таймер для отдельного

#javascript #html #css #webrtc

Вопрос:

В настоящее время я пытаюсь установить таймер для каждого созданного div, в соответствии с которым каждый div имеет цвет фона зеленого или красного в зависимости от наличия обнаружений в видео WebRTC. Есть ли способ назначить таймер для дивов индивидуально? Или, может быть, проверить только мое собственное видео? Я пробовал что-то вроде приведенного ниже, но это не работает, когда в вызове участвует более 1 человека, так как «время» будет глобальной переменной. Я тоже пробовал что-то подобное time = Math.ceil((time 1)/checkerBox.length) , но, похоже, это тоже не работает. Любые указатели будут полезны

 function checker(){
    var time =0;
     var timer = setInterval(function (){

        for(var i=0;i<checkerBox.length;i  ){

                if(checkerBox[i].style.backgroundColor=="red"){
                   time = time   1;
                    console.log("Box"   videoNum[i].innerHTML   " is not present for : "   checkerBox[i].innerHTML    " seconds");
                }else{
                    time = 0;
                }
                
                //Exceed time
                if(checkerBox[i].innerHTML == 30){
                    setTimeout(function(){ 
                        takeScreenshot(videoNum[i-1]);
                    }, 100);
                    
                    time = 0;
                }

                checkerBox[i].innerHTML =  time;
        }

       },1000)
}
 

Обновление : В итоге я использовал массивы

  var takenFrom;
    var d = new Date();
    let timeKeep = new Array(0,0,0,0,0,0,0,0,0,0,0);
    let screenShots = new Array(0,0,0,0,0,0,0,0,0,0,0);

    function checker(){
        timer = setInterval(function (){
            for(var i=0;i<=(checkerBox.length)-1;i  ){

                tableRow[i 1].cells[2].innerHTML = timeKeep[i]
                tableRow[i 1].cells[3].innerHTML = screenShots[i]  

                if(flag[i].innerHTML=="0"){
                    checkerBoxFalse(checkerBox[i]);
                    timeKeep[i] = timeKeep[i]   1;
                    console.log("Box"   videoNum[i].innerHTML   " is not present for : "    tableRow[i 1].cells[2].innerHTML    " seconds");
                        if(tableRow[i 1].cells[2].innerHTML == 10 ){
                            takenFrom = "Box"   videoNum[i].innerHTML   "minute"   d.getMinutes()   " room"   ROOM_ID 
                            takeScreenshot(videoNum[i],takenFrom);
                            screenShots[i] = screenShots[i]   1;
                            timeKeep[i] = 0;
                        }
                } else if(flag[i].innerHTML== "1"){
                    checkerBoxTrue(checkerBox[i]);
                    timeKeep[i] = 0;
                } 
            }
        },1000)
    }
 

Ответ №1:

ДА:

 for (let div of divs) {
    setInterval(function() {
        //do something with div
    }, 1000);
}
 

let является областью действия блока, поэтому каждый setInterval будет иметь свой собственный div .

Комментарии:

1. В итоге я использовал массивы « let timeKeep = новый массив(0,0,0,0,0,0,0,0,0,0,0)`; » и увеличивал значения внутри, соответствующие индексу окна видеовызова