Как исправить ошибку «Cannot read properties of undefined»?

https://codepen.io/pen/

На просторах гугла достаточно много различный решений данной ошибки, но то, что мне нужно так и нашлось. Проблема в том, что есть функция, которая должна переиспользоватся несколько раз с изменение аргументов для параметров функции, дабы избежать повторного написания одного и того же кода.
В качестве параметров выступают левое и правое значение input range, а так же диапозон между ними, который функция должна высчитывать автоматически, в следствии чего, он будет выделен синим, как в коде прописано.

Я передала параметры для функции по дефолту, куда будут переданы позже как аргументы значения sliderLeft, sliderRight, sliderRange. На сколько я понимаю, из-за чего возникает ошибка "Cannot read properties of undefined", так это из-за разных областей видимости, поскольку функция changeRangeWidth() вызывается в другой функции.
С другой стороны, когда я убираю параметры, а сразу в функцию передаю переменные, которые находятся в общей области видимости, то все работает без ошибок.
Дайте подсказку, пожалуйста, как можно адекватно решить такую проблему, тем самым не писать лишний код?

function changeRangeWidth() {
        let pointLeft = parseInt(sliderLeft.min) + parseInt(sliderLeft.value);
        let pointRight = parseInt(sliderRight.min) + parseInt(sliderRight.value);
        let width = parseInt(pointRight) - parseInt(pointLeft);
    
        sliderRange.style.width = width + '%';
        }
  • Вопрос задан
  • 332 просмотра
Решения вопроса 1
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
Задай параметры функции (неплохо бы ещё прикрутить TS к проекту), если актуально, задай базовые значения или тернарники на присваивание.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
как можно адекватно решить такую проблему

Нормально передавать параметры в функцию, а не надеяться на то, что её вызовут в нужной области видимости.
function changeRangeWidth(sliderLeft, sliderRight, sliderRange) {
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы