Как сохранить входное значение в объекте JSON, используя чистый JavaScript, а затем сохранить его в массиве? - PullRequest
2 голосов
/ 25 мая 2019

Я думаю, что название само по себе объясняется.Мне нужно сохранить входные значения в объекте, а затем сохранить этот объект в массиве.

<html>
  <head>
    <title>Teste</title>
  </head>
  <script>
    function vai(){
      var pessoa = {
      nome = document.getElementById('nome').value,
      idade = document.getElementById('idade').value
    };
      var i = 0;
      var pessoas = [];
      pessoas[i] = pessoa{};
      i++;
    }

  </script>

  <body>
    <label>Digite seu nome aqui</label>
    <input type='text' id='nome' placeholder='aquii'>
    <label>Digite sua idade aqui</label>
    <input type='text' id='idade' placeholder='aquii'>
    <button onclick='vai()'>
      Teste aqui
    </button>

  </body>
</html>

Ответы [ 2 ]

3 голосов
/ 25 мая 2019

Вы должны объявить массив в глобальной среде (вне функции).У вас также есть некоторые проблемы с синтаксисом внутри объекта (должно быть : вместо =).Тогда вы можете просто push() объект в массиве при каждом нажатии кнопки.

Попробуйте следующим образом:

var pessoas = [];
function vai(){
  var pessoa = {
    nome: document.getElementById('nome').value,
    idade: document.getElementById('idade').value
  };
  pessoas.push(pessoa);
  console.log(pessoas);
}
<label>Digite seu nome aqui</label>
<input type='text' id='nome' placeholder='aquii'>
<label>Digite sua idade aqui</label>
<input type='text' id='idade' placeholder='aquii'>
<button onclick='vai()'>
  Teste aqui
</button>

Вы подходите без использования push(), поддерживая переменную почти правильно, за исключением области объявления переменной.Вы должны объявить это как глобальную переменную.Вы можете назначить объект в текущую позицию и увеличить его при каждом вызове функции:

var pessoas = [];
var i = 0;
function vai(){
  var pessoa = {
    nome: document.getElementById('nome').value,
    idade: document.getElementById('idade').value
  };
  pessoas[i] = pessoa;
  i++;
  console.log(pessoas);
}
<label>Digite seu nome aqui</label>
<input type='text' id='nome' placeholder='aquii'>
<label>Digite sua idade aqui</label>
<input type='text' id='idade' placeholder='aquii'>
<button onclick='vai()'>
  Teste aqui
</button>

Обратите внимание: Вы также можете просто использовать length свойство измассив в качестве текущего index , в этом случае вам нужно поддерживать переменную:

var pessoas = [];
function vai(){
  var pessoa = {
    nome: document.getElementById('nome').value,
    idade: document.getElementById('idade').value
  };
  pessoas[pessoas.length] = pessoa;
  console.log(pessoas);
}
<label>Digite seu nome aqui</label>
<input type='text' id='nome' placeholder='aquii'>
<label>Digite sua idade aqui</label>
<input type='text' id='idade' placeholder='aquii'>
<button onclick='vai()'>
  Teste aqui
</button>
1 голос
/ 25 мая 2019

Вам нужно исправить три вещи:

  • Использовать : внутри литералов объекта {} вместо =
  • Объявить основной массив pessoas в глобальномобласть видимости, чтобы он не менялся при каждом нажатии
  • Используйте push(), чтобы добавить объект в конец массива.

Ниже приведен рабочий фрагмент.

var pessoas = [];

function vai() {
  var pessoa = {
    nome: document.getElementById('nome').value,
    idade: document.getElementById('idade').value
  };
  pessoas.push(pessoa)
  console.log(pessoas)
}
<label>Digite seu nome aqui</label>
    <input type='text' id='nome' placeholder='aquii'>
    <label>Digite sua idade aqui</label>
    <input type='text' id='idade' placeholder='aquii'>
    <button onclick='vai()'>
      Teste aqui
    </button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...