Javascript: Как я могу получить доступ к функциональной переменной в цикле do while? - PullRequest
0 голосов
/ 21 мая 2018

Это делает пока проверяет пользовательский ввод.Тем не менее, консоль выдает ошибку, говоря: «размер не определен», что, я думаю, связано с тем, что размер находится внутри функции, тогда как условие while находится вне функции

const newGrid = document.getElementById('new-grid');
newGrid.addEventListener('click', createGrid);

const main = document.querySelector('main');

function createGrid() {
    do {
        let size = parseInt(prompt("Please enter a number from 1 to 64", ""), 10);

        const numPx = (600 / size) - 2;
        let px = numPx + 'px';

        for (let i = 0; i < size; i++) {
            for (let j = 0; j < size; j++) {
                const div = document.createElement('div');
                div.setAttribute('class', 'grid');
                main.appendChild(div);
                div.setAttribute('style', `width: ${px}; height: ${px}`);
            }
        }

    } while(isNaN(size) || size > 64 || size < 1);

}

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Возможны следующие варианты:

  • изменить его на var (const и let имеют блочную область, переменные имеют функциональную область и поднимаются, подробнее об этом здесь )
  • и более элегантно - измените let size на const size (потому что вам не нужно переназначать его) и поднимите его на уровень примерно так:

    function createGrid() {
    const size = parseInt(prompt("Please enter a number from 1 to 64", ""), 10);
    
0 голосов
/ 21 мая 2018

Вы можете объявить переменную (let size;) внутри функции, но за пределами блока do, затем назначить ее (size = parseInt(prompt("Please enter a number from 1 to 64", ""), 10);) в блоке do.

...