как сделать так чтобы этот код запускался при нажиме на кнопку.И при повторном нажиме код останавливался

мой код:

const myImg = document.querySelector('.myImg');

        let i = 0;
        setInterval(() => {
            if (i == 4) {
                i = 0;
            }
            myImg.setAttribute('src',`./img/img${i}.jpg`);
            myImg.setAttribute('alt',`img${i}`);
                i++;
        }, 2000); 

Ответы (2 шт):

Автор решения: Алексей Шиманский

const btn = document.querySelector('#btn');
let enableTimer = false;
let timer = null;

btn.addEventListener('click', () => {
    enableTimer = !enableTimer;
    
    if (!enableTimer) {
        clearInterval(timer);    
        return;
    }
    
    let i = 0;
    timer = setInterval(() => {
        console.log('Вывод в консоль: ' + (++i));
    }, 500);         
});
<button id="btn">clickMe</button>

Вот код, запускающийся по кнопке и останавливающийся. Добавить свой код в него не должно составить труда.

→ Ссылка
Автор решения: dresser
const myImg = document.querySelector('.myImg');
let intervalId
let i = 0

const intervalHandler = () => {
        if (i === 4) {
            i = 0;
        }
        myImg.setAttribute('src',`./img/img${i}.jpg`);
        myImg.setAttribute('alt',`img${i}`);
        i++;
}

function onKeyDown() {
    myImg.addEventListener("onkeydown", () => {
        intervalId = setInterval(intervalHandler, 2000)
    })
}

function onKeyUp() {
    myImg.addEventListener("onkeyup", () => {
        clearInterval(intervalId)
    })
}

→ Ссылка