JavaScript переменная не находится в области видимости - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь написать функцию JavaScript, которая просто меняет страницу, когда средство выбора даты закрывается с использованием платформы Play. Я столкнулся с проблемой, когда переменная, которую я использую (dateEntry), кажется, просто не находится в области видимости. Метод ниже работает хорошо, когда я передаю строку, но не когда я пытаюсь передать dateEntry, которая должна получить значение из datePicker. Я никогда раньше не пользовался платформой Play, поэтому полагаю, что с этим что-то не так. Любая помощь с благодарностью.

<script>
            function moveToPlaylistPage() {
                var dateEntry = document.getElementById("dob").value;
                window.location.href = "@routes.PlaylistTableController.playlistTable(dateEntry)"
            }

            document.addEventListener('DOMContentLoaded', function() {
                const options = {
                    autoClose: true,
                    minDate: new Date(1954, 1, 1),
                    maxDate: new Date(2019, 12, 31),
                    yearRange: 70,
                    onClose: moveToPlaylistPage
                };
                const elems = document.querySelectorAll('.datepicker');
                const instances = M.Datepicker.init(elems, options);
            });
</script>

1 Ответ

0 голосов
/ 14 января 2020

Строка маршрута передается буквально в свойство href, поэтому передача значения строки работает, но не имя переменной. Что вы хотите сделать, это превратить значение переменной в строку и передать его. Что-то вроде:

function moveToPlaylistPage() {
    var dateEntry = document.getElementById("dob").value;
    window.location.href = "@routes.PlaylistTableController.playlistTable(" + dateEntry + ")"
}

будет работать нормально, если вам нужна поддержка IE, но если вы можете, я предпочитаю синтаксис литерала шаблона :

function moveToPlaylistPage() {
    var dateEntry = document.getElementById("dob").value;
    window.location.href = `@routes.PlaylistTableController.playlistTable(${dateEntry})`
}

Вот матрица совместимости для буквенного синтаксиса шаблона.

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