我正在尝试实现一种从输入框获取数据并将数据发送到json数组的方法,我实现了它,但是在推送新数组时删除了数组中的先前数据。我希望所有数据都存储在json数组中。如何在javascript或jquery中实现此目的。下面是我尝试过的。
<script> $(document).ready(() => { $('#submit').click(() => { var objKey = 0; var person = []; var name = $('#name').val(); var age = $('#age').val(); var address = $('#address').val(); objKey++; var obj = { 'id': objKey, 'name': name, 'age': age, 'address': address} var hasMatch = false; if (name === '' || age === '' || address === '') { alert('Fields should not be null'); return false; } else { var index = 0; if (index < person.length) { ++indexvar animal = person[index]; if (animal.name == obj.name) { hasMatch = true; alert('oops'); return false; } else { person.push(obj); buildTable(person)
嘿,如果我没看错,问题出在你的数组:
var person = [];
每次您单击“提交”按钮都会被(重新)初始化。因此,您以前的数据将丢失。
尝试更改以下代码:
$(document).ready(() => { $('#submit').click(() => { var objKey = 0; var person = [];
至:
$(document).ready(() => { var person = []; $('#submit').click(() => { var objKey = 0;
通过在就绪块中声明人员,您的Submit-Event可以访问此变量。但是,每次单击按钮时都不会覆盖它。
希望这可以帮助
问题是您每次点击都会创建一个新数组。将person
变量移到点击处理程序之外:
$(document).ready(() => { var person = [];// <============== $('#submit').click(() => { var objKey = 0;
如果这样做,则只有一个阵列,person.push
并将其添加到该阵列中。
问题是,单击后您将数组“ person”重新定义为一个空数组。您应该在代码中之前定义它。