Reputation: 55
i have a function to create a schedule i have a class schedule then an array which stores the objects created but when i try displaying the objects in a table i get undefined
const mySchedules=[];
class Schedule {
constructor(name, subject, time, day) {
this.name = name;
this.subject = subject;
this.time = time;
this.day = day;
}
}
function create() {
let
name = document.getElementById("name").value,
subject = document.getElementById("subject").value,
time = document.getElementById("time").value,
day = document.getElementById("day").value,
table = document.getElementById("table")
mySchedules.push(new Schedule(name, subject, time, day))
//create object
let obj = new Schedule();
// Create Row
let row = `<tr>
<td>${obj.name}</td>
<td>${obj.subject}</td>
<td>${obj.time}</td>
<td>${obj.day}</td>
</tr>`;
table.insertAdjacentHTML("beforeend", row);
}
Upvotes: 1
Views: 373
Reputation: 1073
By doing this let obj = new Schedule();
you are initializing your object to empty schedule which makesname
property of obj
and other properties undefined.
Changing your code like this would help.
const mySchedules=[];
class Schedule {
constructor(name, subject, time, day) {
this.name = name;
this.subject = subject;
this.time = time;
this.day = day;
}
}
function create() {
let
name = document.getElementById("name").value,
subject = document.getElementById("subject").value,
time = document.getElementById("time").value,
day = document.getElementById("day").value,
table = document.getElementById("table")
// store the schedule in a variable
let schedule = new Schedule(name, subject, time, day);
mySchedules.push(schedule)
//create object
let obj = schedule;
// Create Row
let row = `<tr>
<td>${obj.name}</td>
<td>${obj.subject}</td>
<td>${obj.time}</td>
<td>${obj.day}</td>
</tr>`;
table.insertAdjacentHTML("beforeend", row);
}
Upvotes: 1
Reputation: 10686
Your object obj
that you're trying to reference is empty, because you called your constructor with no agruments, as Taplar said above:
let obj = new Schedule()
You need to call it with your arguments:
let obj = new Schedule(name, subject, time, day)
In which case your mySchedules
array is pretty useless.
Upvotes: 0