Доступ к свойству объекта внутри функции - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь получить доступ к свойствам объектов внутри массива в моем коде, чтобы отобразить текстовые значения полей ввода, восстановленные после refre sh из локального хранилища, но по какой-то причине, когда я пытаюсь запустить for l oop внутри моей функции appStart () он дает мне: «Uncaught TypeError: Cannot read property 'id' of undefined at appStart». Мы будем очень благодарны за любые идеи о том, почему это происходит и как это исправить.

const currentDayPlaceholder = $("#currentDay");
const timeInTimeBlocks = $(".input-group-text");
const timeBlockInput = $(".form-control");
const saveButton = $(".saveBtn");
let numericCurrentTime = parseInt(moment().format("H A"));
let notes = [];


currentDayPlaceholder.append(moment().format('dddd, MMMM Do'));

function timeBlocksColorDeterminator() {

    for (let i = 0; i < timeInTimeBlocks.length; i++) {

        let numericTimeinTimeBlock = parseInt($(timeInTimeBlocks[i]).text());
        if ($(timeInTimeBlocks[i]).hasClass('pm')) {
            numericTimeinTimeBlock += 12;
        }
        if (numericCurrentTime === numericTimeinTimeBlock) {
            $(timeBlockInput[i]).addClass("present");
        } else if (numericCurrentTime > numericTimeinTimeBlock) {
            $(timeBlockInput[i]).addClass("past");
        } else {
            $(timeBlockInput[i]).addClass("future");
        }

    }
}

function appStart() {

    notes = JSON.parse(localStorage.getItem("timeBlockNotes"));

    for (let i = 0; i < timeBlockInput.length; i++) {
        if (i === parseInt(notes[i].id)) {
            timeBlockInput[i].value = notes[i].value;
        }
    }
}
appStart();

saveButton.on("click", function () {
    console.log("click");
    notes.push({
        value: timeBlockInput[this.id].value,
        id: this.id
    })
    localStorage.setItem("timeBlockNotes", JSON.stringify(notes));
})

timeBlocksColorDeterminator();

1 Ответ

0 голосов
/ 18 июня 2020

Я исправил это после изменения моей функции appStart () на это:

function appStart() {

    notes = JSON.parse(localStorage.getItem("timeBlockNotes"));

    for (let i = 0; i < notes.length; i++) {

        timeBlockInput[parseInt(notes[i].id)].value = notes[i].value;

    }
}

спасибо, ребята, за ваши комментарии и ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...