Как добавить значение из поля ввода в массив, а затем вывести его содержимое? - PullRequest
0 голосов
/ 27 апреля 2020

Как я могу go добавить значение поля ввода в массив и затем отобразить содержимое этого массива? Это то, что я придумал, и я не уверен, почему это не работает - console.log тоже ничего не публикует на консоли.

var user = user;
if (!user) {
  user = prompt('Please choose a username:');
  if (!user) {
    alert('Your name has been set to "Anonymous"');
  } else {
      alert('Your name has been set to "'+ user +'"');
  }
}

var items = [];
function userArray() {
    items.push(user);
    return false;
    console.log(items);
    }

socket.on('onlineUsers', function (data) {
      $('.dispUser').html(items);
    });

Остальная часть кода в файл ниже, на всякий случай, если это поможет ... (изменен оператор возврата согласно первому ответу)

var user = user;
if (!user) {
  user = prompt('Please choose a username:');
  if (!user) {
    alert('Your name has been set to "Anonymous"');
  } else {
      alert('Your name has been set to "'+ user +'"');
  } 
}

var items = [];

function userArray() {
    items.push(users);
    console.log(items);
    return false;
    }

socket.on('onlineUsers', function (data) {
      $('.dispUser').html(items);
    });

//Counts the number of users online
socket.on('count', function (data) {
  $('.user-count').html(data);
});

//Receives messages and outputs it to the chat section
socket.on('message', function (data) {
  $('.chat').append('<p><strong>' + data.user + '</strong>: ' + data.message + '</p>');
  $('.chat').scrollTop($('.chat').height());
});


//SENDING OF THE MESSAGE
//Submit the form through HTTPS
$('form').submit(function (e) {
  e.preventDefault();

  // Retrieve the message from the user
  var message = $(e.target).find('input').val();

  // Send the message to the server
  socket.emit('message', {
    user: user || 'Anonymous',
    message: message
  });

  // Clears the message box after the message has been sent
  e.target.reset();
  $(e.target).find('input').focus();
});

1 Ответ

1 голос
/ 27 апреля 2020

Ответ

Ваша реализация в порядке, но у вас есть ошибка, которая не позволяет ей работать, как вы описали.

Вызов console.log(items) ничего не печатает, потому что эта строка кода никогда не запускается.

Когда вы возвращаетесь из функции, последующие строки кода не будут выполняться. Вы должны return в качестве последней строки в вашей функции или обернуть ее в условное выражение.

Например:

function userArray() {
  items.push(user);
  console.log(items);
  return false;
}

Как отладить

Изучение техники разобраться в этом вопросе - бесценный инструмент. Вы можете использовать отладчик, такой как Chrome Devtools, для добавления точек останова в ваш код. Это позволит вам остановить выполнение в определенной строке, просмотреть значение переменных и пройтись по оставшимся строкам кода.

Это позволит четко видеть, что строка кода никогда не выполняется.

Подробнее здесь: https://developers.google.com/web/tools/chrome-devtools/javascript

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