我知道很久以前问过这个问题,我已经研究了很多,但我找不到解决方案。所以,我有一个表单,我使用form.serializeArray();
将表单值获取到数据数组。我使用此数组创建了一个对象obj
。我需要将每个对象推送到新数组personArray
。但是推送此数组中的对象只会返回最后推送的对象。我怎么解决这个问题。我需要在personArray
var obj = {};
var data, i;
var personArray = [];
var pageArray = [];
$("#submitButton").click(function() {
addButton();
// addTable();
// pagination();
// resetForm('');
});
/*Formdaki verileri objeye aktarır, objeyi array'a aktarır*/
function addButton() {
data = $('#personForm').serializeArray();
for (i = 0; i < data.length; i++) {
obj[data[i].name] = data[i].value;
}
personArray.push(obj);
console.log(personArray);
/*Datayı array'e aktarır*/
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<form id="personForm">
<div>
<label for="firstname">İsim:</label>
<input type="text" id="firstname" name="firstname" value="" placeholder="İsim" />
</div>
<div>
<label for="lastname">Soyisim:</label>
<input type="text" id="lastname" name="lastname" value="" placeholder="Soyisim" />
</div>
<div>
<label for="tc">TC:</label>
<input type="tel" id="tc" name="tc" value="" placeholder="TC Kimlik No" />
</div>
<div>
<label for="birthday">Doğum T:</label>
<input type="date" id="birthday" name="birthday" />
</div>
<div>
<input type="button" value="Kaydet" id="submitButton" />
</div>
</form>
答案 0 :(得分:2)
您正在使用相同的对象,因此每次您覆盖已经推送的对象并再次重新推送它。由于object只是对内存空间的引用,因此每次都必须创建一个新对象,否则最终只能推送多次相同的对象。以下是对正在发生的事情的解释:
var arr = [];
var o = {};
o["data"] = "hello";
arr.push(o);
o["other"] = "world";
arr.push(o);
console.log(arr);
这是你应该做的:
var hash = {}; // the hash object
var data, i;
var personArray = [];
var pageArray = [];
$("#submitButton").click(function() {
addButton();
// addTable();
// pagination();
// resetForm('');
});
function addButton() {
var obj = {}; // create a brand new object every time
data = $('#personForm').serializeArray();
for (i = 0; i < data.length; i++) {
obj[data[i].name] = data[i].value;
hash[data[i].name] = data[i].value; // assign to the hash object
}
personArray.push(obj);
console.log(personArray);
}
答案 1 :(得分:0)
试试这个!
var data, i;
var personArray = [];
var pageArray = [];
$("#submitButton").click(function() {
addButton();
// addTable();
// pagination();
// resetForm('');
});
/*Formdaki verileri objeye aktarır, objeyi array'a aktarır*/
function addButton() {
var obj = {};
data = $('#personForm').serializeArray();
for (i = 0; i < data.length; i++) {
obj[data[i].name] = data[i].value;
}
personArray.push(obj);
console.log(personArray);
/*Datayı array'e aktarır*/
}