“如何修复”;未捕获类型错误:月份为空";在JavaScript中
我正在为一个html页面创建日历,但这是我的月份和年份的错误。我试着打开窗户,但没用“如何修复”;未捕获类型错误:月份为空";在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
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 mthvar month=document.getElementById定义元素(“cal mth”);
在您的情况下,这将返回null,因此请确保您已正确写入id,甚至在您尝试选择该元素时该元素已存在