Как получить массив для увеличения при нажатии клавиши - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно увеличить мой массив нажатием клавиши.Я могу получить первый элемент массива для отображения, но не могу получить другие элементы массива для отображения, когда я нажимаю другую клавишу.

Я использовал предупреждение, чтобы получить сообщение для отображения снажатие клавиши и может получить первый элемент в массиве для отображения, но не может получить другие элементы массива для отображения при повторном нажатии клавиши.

function display_phrase() {
  var arrayPhrase = ['Relax!', 'Dont Do It!', 'Chill!', 'Take It Easy!', 'Do It!', 'Panic!', 'Beat It!','Forget About It!','Wooooo!','Oh Bother!'];   
  var arrayCounter = 0;
  var arrayPosition = (arrayCounter % arrayPhrase.length);

  $("#display_phrase").html("<h1>" +arrayPhrase[arrayPosition] +".</h1>");
}

var arrayCounter = 0;

$(document).ready(function() {
  $('body').keypress(function() {
    display_phrase();
    arrayCounter++;
  });
});

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Удалить arrayCounter внутри функции.Поскольку у вас есть глобальная переменная и локальная переменная с одинаковым именем, локальная переменная имеет приоритет внутри функции.

Просто удалите ее и дайте ей использовать глобальную переменную.

function display_phrase() {
  var arrayPhrase = ['Relax!', 'Dont Do It!', 'Chill!', 'Take It Easy!', 'Do It!', 'Panic!', 'Beat It!', 'Forget About It!', 'Wooooo!', 'Oh Bother!'];
  //var arrayCounter = 0;
  var arrayPosition = (arrayCounter % arrayPhrase.length);

  $("#display_phrase").html("<h1>" + arrayPhrase[arrayPosition] + ".</h1>");
}

var arrayCounter = 0;

$(document).ready(function() {
  $('body').keypress(function() {
    display_phrase();
    arrayCounter++;
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="display_phrase"></div>
0 голосов
/ 19 февраля 2019

В вашей версии display_phrase маскирует глобальную переменную arrayCounter с локальной переменной с тем же именем.Чтобы исправить это, удалите локальный var arrayCounter = ... и сохраните объявление в более высоком объеме.

Например:

var arrayPhrase = ['Relax!', 'Dont Do It!', 'Chill!', 'Take It Easy!', 'Do It!', 'Panic!', 'Beat It!','Forget About It!','Wooooo!','Oh Bother!'];   
var arrayCounter = 0;

function display_phrase() {
    var arrayPosition = (arrayCounter % arrayPhrase.length);

    $("#display_phrase").html("<h1>" +arrayPhrase[arrayPosition] +".</h1>");
}

...
...