Доступ к переменным не является проблемой.
var caixa = document.getElementById('idtxt').value;
var caracteres = caixa.length;
Этот код выбирает значение текстового поля и проверяет, сколько символов в этом значении.
Проблема в что в глобальной области эти переменные устанавливаются только при загрузке страницы. Таким образом, в текстовом поле ничего нет, поэтому 0
сохраняется в var caracteres = caixa.length;
Позже срабатывает обработчик keydown
, а caracteres
по-прежнему равен нулю, потому что вы не проверили текущее значение. текстового поля.
Это работает, когда вы перемещаете значения в функцию, потому что вы выбираете текущее значение текстового поля и проверяете его длину в каждом отдельном keydown
событии.
Таким образом, вы можете хранить элементы, которые не будут меняться в глобальной области видимости, но те элементы, которые будут изменяться каждый раз при запуске вашей функции, должны go в области действия функции.
var idtxt = document.getElementById('idtxt');
var calculadora = document.getElementsByClassName('contagem');
function algebra(){
var caracteres = idtxt.value.length;
var mat = (200 - (caracteres));
calculadora[0].innerHTML = mat;
}
caixao.addEventListener('keydown', algebra, false);