Разный контекст при разном навешивании обработчика событий
Почему обработка события через JS работает как надо, а через html, this ссылается на window Есть такая функция
function foo() {
console.log(this)
}
В этом примере работает нормально
let btn = document.querySelector('button');
btn.onclick = foo;
Здесь ссылается на window
<button onclick="foo()">Button</button>
Причем так тоже работает нормально
<button onclick="console.log(this)">Button</button>