Отправить переменную в ту же функцию - PullRequest
4 голосов
/ 01 мая 2020

Мне нужна функция, которая ищет элементы с классом «comment», и если количество комментариев изменилось (если есть новый комментарий), она вызовет другую функцию. Вот что я сделал:

function main(num0){
    var comments = document.getElementsByClassName("comment");
    var num = comments.length;
    if (num!=num0){
        //function to call();
        console.log("New Comment");
    }
    setTimeout(main(num),10); //check every 10 for new comments
}
main(0);

num0 - количество комментариев в последний раз, когда была вызвана функция, поэтому я пытаюсь вызвать ту же функцию, но num0 принимает значение num, но это не так похоже на работу.

Ответы [ 3 ]

6 голосов
/ 01 мая 2020

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

let num = 0;
setInterval(()=>{
    var comments = document.getElementsByClassName("comment");
    var num1 = comments.length;
    if (num!=num1){
        //function to call();
        console.log("New Comment");
        num=num1
    }
},10)
1 голос
/ 01 мая 2020

Ваше использование setTimeout недопустимо; Вы вызываете функцию main вместо предоставления setTimeout обратного вызова. Я также считаю, что вам нужно передать num0 вместо num в ваше время ожидания.

Попробуйте это:

function main(num0){
    var comments = document.getElementsByClassName("comment");
    var num = comments.length;
    if (num!=num0){
        //function to call();
        console.log("New Comment");
    }
    setTimeout(main, 10, num0); // Changed this line
}
main(0);

Просмотрите это относительно функции setTimeout: https://www.w3schools.com/jsref/met_win_settimeout.asp

0 голосов
/ 01 мая 2020

setTimeout принимает ссылку на функцию. В вашем случае вы не передаете ссылку, вы передаете результат этой функции, вызывая ее.

Пример синтаксиса, который делает то, что вы намерены сделать:

setTimeout(() => main(num),10); //check every 10 for new comments

https://www.w3schools.com/jsref/met_win_settimeout.asp

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