“如何修复”;未捕获类型错误:月份为空";在JavaScript中

“如何修复”;未捕获类型错误:月份为空";在JavaScript中,javascript,html,css,Javascript,Html,Css,我正在为一个html页面创建日历,但这是我的月份和年份的错误。我试着打开窗户,但没用 Uncaught TypeError: month is null <anonymous> website address:197 EventListener.handleEvent* website address:184 未捕获类型错误:月份为空 网址:197 EventListener.handleEvent*网址:184 以下是此功能的完整代码: list : funct

我正在为一个html页面创建日历,但这是我的月份和年份的错误。我试着打开窗户,但没用

Uncaught TypeError: month is null
    <anonymous> website address:197
    EventListener.handleEvent* website address:184
未捕获类型错误:月份为空
网址:197
EventListener.handleEvent*网址:184
以下是此功能的完整代码:

list : function () {
    //BASIC CALCULATIONS - DAYS IN MONTH, START + END DAY
    cal.sMth = parseInt(document.getElementById("cal-mth").value); // selected month
    cal.sYear = parseInt(document.getElementById("cal-yr").value); // selected year
    var daysInMth = new Date(cal.sYear, cal.sMth+1, 0).getDate(), // number of days in selected month
        startDay = new Date(cal.sYear, cal.sMth, 1).getDay(), // first day of the month
        endDay = new Date(cal.sYear, cal.sMth, daysInMth).getDay(); // last day of the month

//LOAD DATA FROM LOCALSTORAGE
cal.data = localStorage.getItem("cal-" + cal.sMth + "-" + cal.sYear);
    if (cal.data==null) {
      localStorage.setItem("cal-" + cal.sMth + "-" + cal.sYear, "{}");
      cal.data = {};
    } else {
      cal.data = JSON.parse(cal.data);
    }

//MONTH & YEAR SELECTOR
window.addEventListener("load", function () { //184

  var now = new Date(),
      nowMth = now.getMonth(),
      nowYear = parseInt(now.getFullYear());


  var month = document.getElementById("cal-mth");
  for (var i = 0; i < 12; i++) {
    var opt = document.createElement("option");
    opt.value = i;
    opt.innerHTML = cal.mName[i];
    if (i==nowMth) { opt.selected = true; }
    month.appendChild(opt); //197
  }

  //window.onload=function(){
  var year = document.getElementById("cal-yr");
  for (var i = nowYear-10; i<=nowYear+10; i++) { // Set to 10 years for range
    var opt = document.createElement("option");
    opt.value = i;
    opt.innerHTML = i;
    if (i==nowYear) { opt.selected = true; }
    year.appendChild(opt);
  }

  
  //window.onload=function(){
  document.getElementById("cal-set").addEventListener("click", cal.list);
  cal.list();
});
列表:函数(){
//基本计算-月天数,开始日+结束日
cal.sMth=parseInt(document.getElementById(“cal mth”).value);//所选月份
cal.sYear=parseInt(document.getElementById(“cal yr”).value);//所选年份
var daysInMth=新日期(cal.sYear,cal.sMth+1,0).getDate(),//所选月份的天数
startDay=新日期(cal.sYear,cal.sMth,1).getDay(),//每月的第一天
endDay=新日期(cal.sYear、cal.sMth、daysInMth).getDay();//当月的最后一天
//从本地存储加载数据
cal.data=localStorage.getItem(“cal-”+cal.sMth+“-”+cal.sYear);
如果(校准数据==null){
setItem(“cal-”+cal.sMth+“-”+cal.sYear,{}”);
cal.data={};
}否则{
cal.data=JSON.parse(cal.data);
}
//月和年选择器
addEventListener(“加载”,函数(){//184
var now=新日期(),
nowMth=now.getMonth(),
nowYear=parseInt(now.getFullYear());
var月=document.getElementById(“cal mth”);
对于(变量i=0;i<12;i++){
var opt=document.createElement(“选项”);
opt.value=i;
opt.innerHTML=cal.mName[i];
如果(i==nowMth){opt.selected=true;}
月。追加子项(opt);//197
}
//window.onload=function(){
var年=document.getElementById(“cal年”);

对于(var i=nowYear-10;i您能分享HTML代码吗?@ozgur有没有一种方法可以在不占用整个页面的情况下将其添加到这里?您是否确实有一个id为“cal mth”的元素?您可以尝试只添加HTML的相关部分,在该部分中,您可以使用id cal mth
var month=document.getElementById定义元素(“cal mth”);
在您的情况下,这将返回null,因此请确保您已正确写入id,甚至在您尝试选择该元素时该元素已存在