为什么我的数组没有作为新行追加到表中?当它这样做时,它是未定义的?JavaScript/HTML

为什么我的数组没有作为新行追加到表中?当它这样做时,它是未定义的?JavaScript/HTML,javascript,html,Javascript,Html,因此,如下图所示,在控制台中,它提供了我输入的所有数据,但是它不会显示为新行。如果我将第二个函数/for循环移动到第一个循环中,它只会将每个值显示为未定义,这似乎是一个进步。为什么?我如何解决这个问题?(同样,当所有内容都在一个函数中时,每次单击按钮提交数据时,从1行变为3行) var list=[]; 函数addAppointment(){ var appointmentData={}; var inputDate=document.getElementById('date')。值; appo

因此,如下图所示,在控制台中,它提供了我输入的所有数据,但是它不会显示为新行。如果我将第二个函数/for循环移动到第一个循环中,它只会将每个值显示为未定义,这似乎是一个进步。为什么?我如何解决这个问题?(同样,当所有内容都在一个函数中时,每次单击按钮提交数据时,从1行变为3行)

var list=[];
函数addAppointment(){
var appointmentData={};
var inputDate=document.getElementById('date')。值;
appointmentData.date=输入日期;
var inputStartTime=document.getElementById('startTime')。selectedIndex;
appointmentData.startTime=输入startTime;
var inputenedtime=document.getElementById('endTime')。选择索引;
appointmentData.endTime=输入时间;
var inputSubject=document.getElementById('subject');
appointmentData.subject=输入主题;
var inputVincement=document.getElementById('地点');
appointmentData.Vince=输入地点;
列表。推送(任命数据);
}
控制台日志(“列表”,列表)
函数addData(数据){
console.log(数据)
const tbody=document.getElementById(“tbody”);
对于(变量i=0;i
日记
日记
日期
开始时间
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
结束时间
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
主题:
地点:
优先
高
中等


日期 开始 终点 主题 地点 优先 通过 日期 开始时间 结束时间 主题 地点 优先
日期 年 约会
您是否先运行了
addAppointment()
? 看起来您正在addData定义中调用
addData(list)
,这是故意的吗

我相信这可以做到:

fucntion addAppointment (){
    var list = [];
   
   function getDataFromSubmit() {
       var appointmentData = {};

       var inputDate = document.getElementById('date').value;
       appointmentData.date = inputDate;
       var inputStartTime = document.getElementById('startTime').selectedIndex;
       appointmentData.startTime = inputStartTime;
       var inputEndTime = document.getElementById('endTime').selectedIndex;
       appointmentData.endTime = inputEndTime;
       var inputSubject = document.getElementById('subject');
       appointmentData.subject = inputSubject;
       var inputVenue = document.getElementById('venue');
       appointmentData.venue = inputVenue;
    
       list.push(appointmentData);
    }
    
    function addData(data) {
       console.log(data)
       const tbody = document.getElementById("tbody");

       for (var i = 0; i < data.length; i++) {
           var tr = document.createElement("tr");
           tr.innerHTML = `
                <td>${data[i].inputDate}</td>
                <td>${data[i].inputStartTime}</td>
                <td>${data[i].inputEndTime}</td>
                <td>${data[i].inputSubject}</td>
                <td>${data[i].inputVenue}</td>
           `;
           tbody.append(tr);
        }
    }

    getDataFromSubmit()
    console.log("list", list)
    addData(list);
}
功能添加约会(){
var列表=[];
函数getDataFromSubmit(){
var appointmentData={};
var inputDate=document.getElementById('date')。值;
appointmentData.date=输入日期;
var inputStartTime=document.getElementById('startTime')。selectedIndex;
appointmentData.startTime=输入startTime;
var inputenedtime=document.getElementById('endTime')。选择索引;
appointmentData.endTime=输入时间;
var inputSubject=document.getElementById('subject');
appointmentData.subject=输入主题;
var inputVincement=document.getElementById('地点');
appointmentData.Vince=输入地点;
列表。推送(任命数据);
}
函数addData(数据){
console.log(数据)
const tbody=document.getElementById(“tbody”);
对于(变量i=0;i
查看此位:

    var inputDate = document.getElementById('date').value;
    appointmentData.date = inputDate;
    var inputStartTime = document.getElementById('startTime').selectedIndex;
    appointmentData.startTime = inputStartTime;
    var inputEndTime = document.getElementById('endTime').selectedIndex;
    appointmentData.endTime = inputEndTime;
    var inputSubject = document.getElementById('subject');
    appointmentData.subject = inputSubject;
    var inputVenue = document.getElementById('venue');
    appointmentData.venue = inputVenue;
SELECT元素上的selectedIndex将返回一个数字,因此inputStartTime/inputEndTime将是数字而不是时间。将.selectedIndex更改为.value


inputSubject和InputVincement都指向元素,而不是它们的值。因此,将.value添加到两者的末尾。

请尝试以下脚本:

var list = [];

let appointment = {
    date: "",
    startTime: "",
    endTime: "",
    subject: "",
    venue: "",
    rowData: function () {
        return "<tr><td>" + this.date + "</td><td>" + this.startTime + "</td><td>" + this.endTime + "</td><td>" + this.subject + "</td><td>" + this.venue + "</td></tr>";
    }
}


function addAppointment() {
        let thisAppointment = Object.create(appointment);
        thisAppointment.date = document.getElementById('date').value;
        thisAppointment.startTime = document.getElementById('startTime').value;
        thisAppointment.endTime = document.getElementById('endTime').value;
        thisAppointment.subject = document.getElementById('subject').value;
        thisAppointment.venue = document.getElementById('venue').value;
        list.push(thisAppointment);
        
        let tbody = document.getElementById("tbody");
        tbody.innerHTML += thisAppointment.rowData();

}
var list=[];
让预约={
日期:“,
开始时间:“,
结束时间:“,
    var inputDate = document.getElementById('date').value;
    appointmentData.date = inputDate;
    var inputStartTime = document.getElementById('startTime').selectedIndex;
    appointmentData.startTime = inputStartTime;
    var inputEndTime = document.getElementById('endTime').selectedIndex;
    appointmentData.endTime = inputEndTime;
    var inputSubject = document.getElementById('subject');
    appointmentData.subject = inputSubject;
    var inputVenue = document.getElementById('venue');
    appointmentData.venue = inputVenue;
var list = [];

let appointment = {
    date: "",
    startTime: "",
    endTime: "",
    subject: "",
    venue: "",
    rowData: function () {
        return "<tr><td>" + this.date + "</td><td>" + this.startTime + "</td><td>" + this.endTime + "</td><td>" + this.subject + "</td><td>" + this.venue + "</td></tr>";
    }
}


function addAppointment() {
        let thisAppointment = Object.create(appointment);
        thisAppointment.date = document.getElementById('date').value;
        thisAppointment.startTime = document.getElementById('startTime').value;
        thisAppointment.endTime = document.getElementById('endTime').value;
        thisAppointment.subject = document.getElementById('subject').value;
        thisAppointment.venue = document.getElementById('venue').value;
        list.push(thisAppointment);
        
        let tbody = document.getElementById("tbody");
        tbody.innerHTML += thisAppointment.rowData();

}