我希望我现在发布的内容会更有意义。所以这就是我一直试图在javascript中编写代码并且总是会出现相同的错误,现在已经尝试了一段时间来解决它但我似乎无法找到问题。
function isLeap(type)
{
var yr;
try{
yr=document.getElementById('yearof' + type).value;
try{
yr = parseInt(yr);
if ((yr%4) == 0){
if (yr%100 == 0){
if (yr%400 != 0){
alert("Not Leap");
return "false";
}
if (yr%400 == 0){
alert("Leap");
return "true";
}
}
if (yr%100 != 0){
alert("Leap");
return "true";
}
}
if ((yr%4) != 0){
alert("Not Leap");
return "false";
}
}
catch(e){
}
}
catch(e){
break;
}
}
function monthDays(type){
var month;
var days;
try{
month=document.getElementById('monthof' + type).value;
try{
month = parseInt(month);
if(month%2 != 0 || month == 8){
days= 31;
}
else{
if(month != 2){
days = 30;
}
else{
if(isLeap() == true){
days = 29;
}
else{
days = 28;
}
}
}
var mod=document.getElementById('dayof' + type);
for(var i=1; i<13; i++){
var option=document.createElement("option");
option.text=i.toString();
try{
// for IE earlier than version 8
mob.add(option,mob.options[null]);
}
catch (e){
mob.add(option,null);
}
}
}
catch(e){
}
}
catch(e){
break;
}
}
这是html
<select id="monthofbirthchild" class="month" name="monthofbirthchild" onchange="monthDays("birthchild")">
<option value="MM">MM</option>
</select>
<select id="monthofbirth" class="month" name="monthofbirth" onchange="monthDays("birth")">
<option value="MM">MM</option>
</select>
我正在通过'出生'或'出生儿',以便可以编辑适合儿童或正常儿童的照片。
答案 0 :(得分:1)
您可以使用Date
对象获取一个月的最后日期(也就是一个月的长度):
daysInMonth = new Date(year, month, 0).getDate();
// daysInMonth = new Date(2012, 2, 0).getDate(); // --> 29
实际上2
在示例中是March。但是,任何一个月都没有第0天,因此会返回上个月的最后一个日期。
修改强>
现在看到你的一些代码......
您在在线事件处理程序中出现引用错误。你需要这样说:
onchange="monthDays('birth');"
如果我能正确猜出HTML的其余部分,可以用下面的简单函数替换那个(糟糕的)JS代码。
function monthDays (type) {
var month = parseInt(document.getElementById('monthof' + type).value, 10),
days = new Date(document.getElementById('yearof' + type).value, month + 1, 0).getDate(),
mod = document.getElementById('dayof' + type),
i;
mod.length = days;
for(i = 0; i < days; i++) {
mod[i].value = i + 1;
mod[i].text = i + 1;
}
}