JS why everythingis changing in the array?

Hello, When I add (Hozzáadás button) object to my array with push, and after I add another object, why everythingis changing in the array? How should I have to add correctly? https://codepen.io/lanszelot/pen/eYarmbN?editors=1011 Please fill all 3 because I deleted "empty check" for shortening the code. Easier to read.
2 Replies
MarkBoots
MarkBoots2w ago
if you make it a form, you can take advantage of the new FormData() constructor that makes it easier to collect all the fields and values.
<form class="elrejt" id="teszta">
<label>Tészta hozzávalója: </label><br>
<input type="text" name="teszta_hozzavalo"><br>

<label>Mennyiség: </label><br>
<input type="number" name="teszta_mennyiseg" min="0" step=".01"><br>

<label>Mértékegység: </label><br>
<select name="teszta_mertekegyseg">
<option value="sanyi">---válassz mértékegységet---</option>
...
</select>
<br>

<button type="submit">Hozzáadás</button>

</form>
<form class="elrejt" id="teszta">
<label>Tészta hozzávalója: </label><br>
<input type="text" name="teszta_hozzavalo"><br>

<label>Mennyiség: </label><br>
<input type="number" name="teszta_mennyiseg" min="0" step=".01"><br>

<label>Mértékegység: </label><br>
<select name="teszta_mertekegyseg">
<option value="sanyi">---válassz mértékegységet---</option>
...
</select>
<br>

<button type="submit">Hozzáadás</button>

</form>
const tesztaTomb = [];
const form = document.querySelector("#teszta");
form.addEventListener('submit', handleFormSubmit)

function handleFormSubmit(e){
e.preventDefault();
const data = new FormData(e.target);
const teszta_hozzavalo = data.get('teszta_hozzavalo');
const teszta_mennyiseg = data.get('teszta_mennyiseg');
const teszta_mertekegyseg = data.get('teszta_mertekegyseg');

tesztaTomb.push({
teszta_hozzavalo,
teszta_mennyiseg,
teszta_mertekegyseg
})

console.log(tesztaTomb)
}
const tesztaTomb = [];
const form = document.querySelector("#teszta");
form.addEventListener('submit', handleFormSubmit)

function handleFormSubmit(e){
e.preventDefault();
const data = new FormData(e.target);
const teszta_hozzavalo = data.get('teszta_hozzavalo');
const teszta_mennyiseg = data.get('teszta_mennyiseg');
const teszta_mertekegyseg = data.get('teszta_mertekegyseg');

tesztaTomb.push({
teszta_hozzavalo,
teszta_mennyiseg,
teszta_mertekegyseg
})

console.log(tesztaTomb)
}
lanszelot
lanszelot2w ago
Hello, Thank you for your response. Form not good. It is more complicated. That way how I did it I should have to solve. But I don't know what is wrong. Hello, I solved. The problem was I .push a variable in the array, not datas. So when the variable changes inside the array changes too. Because in the array was : [variable, variable] not datas. I had to add datas.