I am trying to make an array of objects from user input.
The object is pushed in array, but on the next step input overrides every object in array.
I have tried passing category.value
and it works perfectly, but i want to pass the whole category.
for example:
- choose A, submit, output - "a" (as expected)
- choose B, submit, output - "b","b" (expected "a","b")
Why is it happening?
let form = document.getElementById('form');
let category = form.category;
let submit = document.getElementById('formSubmit');
let arr = [];
submit.addEventListener("click",(e)=>{
e.preventDefault();
let c = new C(category);
arr.push(c);
for(let i=0;i<arr.length;i++)
{
console.log(arr[i].category.value);
}
})
class C {
constructor(category)
{
this.category = category;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<form id="form">
<select name="category">
<option value="-">choose category</option>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
<button id="formSubmit" type="submit">submit</button>
</form>
<script src="test.js"></script>
</body>
</html>