关于第二种方法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="path/index.js"></script>
</head>
<body onload="ymd()">
<form>
<select name="yyyy" id="yyyy" onchange="selectYmd()" ></select>年
<select name="yyyy" id="mmmm" onchange="selectYmd()"></select>月
<select name="yyyy" id="dddd"></select>日
<input type="button" name="" value="删除列表框条目" onclick="deleteSelect()">
</form>
</body>
</html>
function ymd(){
//获取id=yyyy的控件;分别年,月,日;
var yyyy=document.getElementById("yyyy");
var mmmm=document.getElementById("mmmm")
var dddd=document.getElementById("dddd");
//设置最后1年为当前年限
var date=new Date();
var year=parseInt(date.getFullYear());
//对年进行赋值
initSelect(yyyy,1999,year);
//对月进行赋值
initSelect(mmmm,1,12);
//对日进行赋值
initSelect(dddd,1,31);
//获取列表的框的长度;
var n=yyyy.length;
//列表框选中某一个项目;
yyyy.selectedIndex=Math.round(n/2);
//天列表框的长度为0,也就是删除天列表框的条目信息;
// dddd.options.length=0;
}
//给列表框赋值,传递三个参数:表单元素、开始值、结束值
function initSelect(obj,start,end) {
for(var i=start;i<=end;i++){
//在对象中添加内容;第一个代表本文显示的内容、第二个为value;
//给obj控件(也就是表单元素)添加条目也就是option,new Option中添加的内容,第一个属性内容,第二个value的值;
obj.options.add(new Option(i,i));
}
}
//删除列表框的某一个条目,即:按索引号删除
function deleteSelect(){
//对日条目进行删除,先获取信息
var dd=document.getElementById("dddd");
dd.options.remove(1);
}
//添加改变事件 第二种方法
function deleteSelect(){
//对日条目进行删除,先获取信息
var dd=document.getElementById("dddd");
dd.options.remove(1);
}
//添加改变事件 第二种方法
function selectYmd(){
//获取年的元素的value
var y=parseInt(document.getElementById("yyyy").value);
//获取月控件的value
var m=parseInt(document.getElementById("mmmm").value);
var dd=document.getElementById("dddd");
//设置月份的天数
var d=31;
initSelect(dd,1,d);
//if判断,月份对应的天数
if(m==4||m==6||m==9||m==11){
for(var i=dd.length;i>30;i--){
dd.options.remove(i);}
}else if(m==2){
for(var i=dd.length;i>28;i--){
dd.options.remove(i-1);
}
if((y%4==0&& y%100!=0)||y%400==0){
for(var i=dd.length;i>29;i--){
dd.options.remove(i-1);
}
}
}else {
dd.options.length=0;
initSelect(dd,1,d);
}
}
选择1,2月都没问题,但是选择3月成为31天后,3月以后都是31天了。 为什么呢
正在回答 回答被采纳积分+1
同学你好,2月份天数有误,在2月份中,当是闰年(如2000年)时,应该移除option选项,直到dd.length为29。当不是闰年时,应该移除option选项,直到dd.length为28。
参考代码如下:
function ymd() { //获取id=yyyy的控件;分别年,月,日; var yyyy = document.getElementById("yyyy"); var mmmm = document.getElementById("mmmm") var dddd = document.getElementById("dddd"); //设置最后1年为当前年限 var date = new Date(); var year = parseInt(date.getFullYear()); //对年进行赋值 initSelect(yyyy, 1999, year); //对月进行赋值 initSelect(mmmm, 1, 12); //对日进行赋值 initSelect(dddd, 1, 31); //获取列表的框的长度; var n = yyyy.length; //列表框选中某一个项目; yyyy.selectedIndex = Math.round(n / 2); //天列表框的长度为0,也就是删除天列表框的条目信息; // dddd.options.length=0; } //给列表框赋值,传递三个参数:表单元素、开始值、结束值 function initSelect(obj, start, end) { for (var i = start; i <= end; i++) { //在对象中添加内容;第一个代表本文显示的内容、第二个为value; //给obj控件(也就是表单元素)添加条目也就是option,new Option中添加的内容,第一个属性内容,第二个value的值; obj.options.add(new Option(i, i)); } } //删除列表框的某一个条目,即:按索引号删除 function deleteSelect() { //对日条目进行删除,先获取信息 var dd = document.getElementById("dddd"); dd.options.remove(1); } //添加改变事件 第二种方法 function deleteSelect() { //对日条目进行删除,先获取信息 var dd = document.getElementById("dddd"); dd.options.remove(1); } //添加改变事件 第二种方法 function selectYmd() { //获取年的元素的value var y = parseInt(document.getElementById("yyyy").value); //获取月控件的value var m = parseInt(document.getElementById("mmmm").value); var dd = document.getElementById("dddd"); //设置月份的天数 var d = 31; initSelect(dd, 1, d); //if判断,月份对应的天数 if (m == 4 || m == 6 || m == 9 || m == 11) { //30天 //for (var i = dd.length; i > 30; i--) { for (var i = dd.length; i >= 30; i--) { dd.options.remove(i); } console.log(dd.length); } else if (m == 2) { if((y % 4==0 && y % 100 !=0) || y % 400 ==0){ //29天 for (var i = dd.length; dd.length > 29; i--) { dd.options.remove(i - 1); } }else{ //28天 for (var i = dd.length; dd.length > 28; i--) { dd.options.remove(i - 1); } } console.log(dd.length); } else { dd.options.length = 0; initSelect(dd, 1, d); } }
祝学习愉快~
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星