如何让计算日期区间的JavaScript代码兼容'use strict'严格模式?
问题解决方案
你的代码问题为minYear和maxYear未显式声明,会默认成为全局变量,若开启严格模式会直接触发引用错误报错。
修改方案
仅需要给这两个变量添加声明关键字即可,不会影响原有代码逻辑。由于两个变量赋值后不会二次修改,推荐使用const声明,也可以根据你的编码习惯替换为let或var:
window.onload = function() { init(); var date = new Date(); var dd = date.getDate(); var mm = date.getMonth() + 1; var yyyy = date.getFullYear(); //Add a zero if one Digit (eg: 05,09) if (dd < 10) { dd = "0" + dd; } //Add a zero if one Digit (eg: 05,09) if (mm < 10) { mm = "0" + mm; } // 新增const声明,不改变原有计算逻辑 const minYear = yyyy - 80; //Calculate Minimun Age (<80) const maxYear = yyyy - 15; //Calculate Maximum Age (>18) var min = minYear + "-" + mm + "-" + dd; var max = maxYear + "-" + mm + "-" + dd; document.getElementById("start").setAttribute("min", min); document.getElementById("start").setAttribute("max", max); };
可选优化提示
你代码注释中标注最大年龄限制为大于18岁,但当前计算逻辑为yyyy - 15,实际限制的是大于15岁,如果你需要严格限制18岁以上,可以将对应行修改为:
const maxYear = yyyy - 18; //Calculate Maximum Age (>18)
内容的提问来源于stack exchange,提问作者user17058623
相关产品推荐
相关产品推荐

