L oop с функцией тайм-аута - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь найти способы сделать мою функцию более динамичной c с помощью l oop. Я понимаю, как можно упростить использование слушателя событий onclick. Но так как я звоню, используя ajax, это довольно запутанно. Я полагаю, это будет очень грязно, если я введу 3 setTimeout в функции.

 const eventHandler = function(){reverse.click(function(){
               setTimeout(function(){
                 updateDATA();
                 $("#" + arcapi.chartId() + " tbody td .crosstab-collapse").click(function(){
                    setTimeout(function(){
                     updateDATA();
                    },0);
                 })
               },0)
            })
          }
      eventHandler()  

Примечание. Требуется сначала загрузить dom и выбрать элемент в течение времени ожидания, поскольку DOM перезаписывается новым элементом. Я думал о создании функции, которую можно будет вводить сколько раз она будет запускаться, например

function setFunc(number){

for(let i = 1 ; i < number; i++){
   onst eventHandler = function(){reverse.click(function(){
               setTimeout(function(){
                 updateDATA();

               },0)
            })
          }
     }

setFunc(3)

можно ли этого добиться?

ОБНОВЛЕНО

То, чего я пытаюсь добиться, это то, что когда пользователь нажимает кнопку, JS нужно будет снова захватывать элементы dom. см. псевдокод ниже

// User will click
 $("#" + arcapi.chartId() + " tbody td .crosstab-collapse").click(function(){
//After table is refresh after ajax call, new dom will overwrite, need timer
        setTimeout(function(){
                  console.log($("#" + arcapi.chartId() + " tbody td .crosstab-collapse"))
        },0)
      })

// Потребуется перезапустить код, как только пользователь снова нажмет кнопку, поскольку DOM всегда будет перезаписываться новыми элементами DOM.

Заключение Я решил проблему, добавив функцию в функцию, каждый раз, когда функция срабатывает, она будет продолжать вызывать одну и ту же кнопку

 function reverseData(){
      $("#" + arcapi.chartId() + " tbody td .crosstab-collapse").click(function(){
        setTimeout(function(){
                  updateDATA()
                  reverseData()
        },0)
      })  
    }

      //main rever event handler , initial load 
        $("#" + arcapi.chartId() + " tbody td .crosstab-collapse").click(function(){
            setTimeout(function(){
                  updateDATA()
                  reverseData()
            },0)
        })

1 Ответ

0 голосов
/ 21 февраля 2020

Надеюсь, это поможет вам.

function eventHandler() {
  var tr = [1, 2, 3];
  setTimeout(function() {
    for (var i = 0; i < tr.length; i++) {
      var time = 1000 * (i + 1);
      setFunc(time);
    }
  }, 100);
}

function setFunc(time) {

  setTimeout(function() {
    ///updateDATA();
    console.log(time);
  }, time);

}
eventHandler();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...