创建js日历的问题

Problems creating js calendar

你好朋友,我收到未捕获的类型错误:document.getElementById(...) is null,我认为这是解析类型 document.getElementById(dayOfWeek).appendChild(dayPTag); 的问题。它应该可视化月份数字。 有类似的问题,他们说问题是元素在执行时仍然没有创建,或者实际上 var 是 null 但不知道如何修复它.. 如何修复..

let yearChosen=new Date().getFullYear();
let monthChosen=new Date().getMonth();                                   
let months=["January","February","March","April","May",
"June","Jully","August","September","Octomber","November","December"];



function getNumberOfDays(year,month){                        
                                                               
let numDays=new Date(year,month+1,0).getDate();
return numDays;

}

function renderCal(getNumDays){                     
let yearPTag=document.getElementById("year");
yearPTag.innerText=yearChosen;
let monthName=months[monthChosen];                    

let monthPTag=document.getElementById("month");
monthPTag.innerText=monthName;

for(i=1;i<=getNumDays; i++){
   let dayPTag=document.createElement("p");
   let dayText=document.createTextNode(i.toString()); 
   dayPTag.appendChild(dayText);
   let date=monthName+""+i.toString()+","+yearChosen; 
   
   let dayOfWeek=new Date(date).getDay();
   
 document.getElementById(dayOfWeek).appendChild(dayPTag);


   
   }
}

renderCal(getNumberOfDays(yearChosen,monthChosen));
#cal-container{

width:300px;
height:500px;
border:1px solid black;
margin:400px;
margin-left:500px;

}

#cal-header{

display:flex;
justify-content:space-around;

}

p{
  display:inline;
}
<head>
<title>Calendar</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale-1.0">

</head>


<body>


<div id="cal-container">

<div id="cal-header">

<div>
<i><</i>
<p id="month"></p>
<i>></i>
</div>
<div>
<i><</i>
<p id="year"></p>
<i>></i>
</div>

</div>

<div id="days-container>

<div id="0" class="days-column"></div>
<div id="1" class="days-column"></div>
<div id="2" class="days-column"></div>
<div id="3" class="days-column"></div>
<div id="4" class="days-column"></div>
<div id="5" class="days-column"></div>
<div id="6" class="days-column"></div>

</div>

</div>

</body>

如果您在 <div id="days-container"> 中修复缺失的 ",JavaScript 就会运行。

let yearChosen=new Date().getFullYear();
let monthChosen=new Date().getMonth();                                   
let months=["January","February","March","April","May",
"June","Jully","August","September","Octomber","November","December"];



function getNumberOfDays(year,month) {                         
    let numDays=new Date(year,month+1,0).getDate();
    return numDays;
}

function renderCal(getNumDays) {                     
    let yearPTag=document.getElementById("year");
    yearPTag.innerText=yearChosen;
    let monthName=months[monthChosen];                    

    let monthPTag=document.getElementById("month");
    monthPTag.innerText=monthName;

for(i=1;i<=getNumDays; i++) {
   let dayPTag=document.createElement("p");
   let dayText=document.createTextNode(i.toString()); 
   dayPTag.appendChild(dayText);
   let date=monthName+""+i.toString()+","+yearChosen; 
   
   let dayOfWeek=new Date(date).getDay();
   
   document.getElementById(dayOfWeek).appendChild(dayPTag);
   }
}

renderCal(getNumberOfDays(yearChosen,monthChosen));
#cal-container{

width:300px;
height:500px;
border:1px solid black;
margin:400px;
margin-left:500px;

}

#cal-header{

display:flex;
justify-content:space-around;

}

p{
  display:inline;
}
<head>
<title>Calendar</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale-1.0">

</head>


<body>


<div id="cal-container">

<div id="cal-header">

<div>
<i><</i>
<p id="month"></p>
<i>></i>
</div>
<div>
<i><</i>
<p id="year"></p>
<i>></i>
</div>

</div>

<div id="days-container">

<div id="0" class="days-column"></div>
<div id="1" class="days-column"></div>
<div id="2" class="days-column"></div>
<div id="3" class="days-column"></div>
<div id="4" class="days-column"></div>
<div id="5" class="days-column"></div>
<div id="6" class="days-column"></div>

</div>

</div>

</body>