0

Мне нужно найти кнопку, когда она появится. Для этого я использую setInterval. Когда он находит эту кнопку, она дает моей переменной необходимое значение. Я проверяю его внутри setTimeout, но после setTimeout (вне этого метода) моя глобальная переменная стала как и setTimeout. Как это исправить?Я не могу изменить глобальную переменную внутри setInterval es6

let foundValue; 
function findById(id) { 
    let interval = setInterval(() => { 
    if (document.getElementById(id)){ 
     let foundValue = document.getElementById(id); 
     clearInterval(interval); 
    } 
    }, 1000); 
    return foundValue; 
} 
+4

У вас есть два 'позволяют foundValue' линии. Это намеренно? –

+2

remove 2nd let .......... – Mahi

+0

По существу, у вас есть две переменные в разных областях, называемых одинаковыми. – Liam

ответ

0

Это потому, что вы повторно объявить foundValue внутри setInterval поэтому вы должны удалить второй let, например:

let foundValue; 
function findById(id) { 
    let interval = setInterval(() => { 
    if (document.getElementById(id)){ 
     foundValue = document.getElementById(id); 
     clearInterval(interval); 
    } 
    }, 1000); 
    return foundValue; 
} 
+0

Я удалил их, но ничего не произошло –

+0

Он работает для меня следующим образом: console.log (foundInterval)// is undefined' then 'findById ('element_id')' then 'console.log (foundInterval) // содержит элемент' – phpchap

Смежные вопросы