我的错误在哪里 - Javascript/jQuery 中选择框的日期计算器?
$(.dateselboxes) .change( function(){
var y; y=$("#year").val();
var m; m=$("#month").val();
var d;
// 检查闰年
var leapYear;
if(y%4==0)
{
if(y%100==0)
{
if(y%400==0) {leapYear=true;}
else {leapYear=false;}
}
else {leapYear=true;}
}
else {leapYear=false;}
// 计算天数
var dz;
if(m==1 || m=3 || m=5 || m=7 || m=8 || m=10 || m=12) {dz=31;}
else if(m==2)
{
if(leapYear==true) {dz=29;}
else {dz=28;}
}
else {dz=30;}
// 删除最后一个选项几次
switch(dz)
{
case 28:
for(i=0;i<3;i++)
{$("#day option:last").remove();}
break;
case 29:
for(i=0;i<2;i++)
{$("#day option:last").remove();}
break;
case 30:
$("#day option:last").remove();
break;
default:
var axaxax=0;
break;
}
});
$(.dateselboxes) .change( function(){
var y; y=$("#year").val();
var m; m=$("#month").val();
var d;
// check leap year
var leapYear;
if(y%4==0)
{
if(y%100==0)
{
if(y%400==0) {leapYear=true;}
else {leapYear=false;}
}
else {leapYear=true;}
}
else {leapYear=false;}
// calculate the number of days
var dz;
if(m==1 || m=3 || m=5 || m=7 || m=8 || m=10 || m=12) {dz=31;}
else if(m==2)
{
if(leapYear==true) {dz=29;}
else {dz=28;}
}
else {dz=30;}
// remove last option a couple of times
switch(dz)
{
case 28:
for(i=0;i<3;i++)
{$("#day option:last").remove();}
break;
case 29:
for(i=0;i<2;i++)
{$("#day option:last").remove();}
break;
case 30:
$("#day option:last").remove();
break;
default:
var axaxax=0;
break;
}
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在这里,这段代码可以工作(至少在 Chrome 中):
现场演示: http://jsfiddle.net/83yUF/
Here you go, this code works (in Chrome, at least):
Live demo: http://jsfiddle.net/83yUF/
$(.dateselboxes)
!这不会选择任何内容,但$(".dateselboxes")
会选择。 jQuery $ 接受一个字符串作为代表选择器的参数。除此之外,你的问题没有解释和大量代码,我不知道发生了什么!
$(.dateselboxes)
! This will not select anything, however$(".dateselboxes")
will. The jQuery $ accepts a string as its argument representing the selector.Asside from that your question has no explanation and loads of code, I haver no idea what is going on!
在通过检查月份 # 来计算天数的情况下,您使用的是单个 = 而不是 ==。
替换为:
单个 = 会将新值分配给您的 m 变量并始终评估为 true,因此我假设您始终在日期选择器中看到 31。作为一种实践,我喜欢通过撤销支票来避免这种情况。即:
if(0 == x)
因为你不能分配给 0,所以意外的单个 = 会导致 javascript 错误,从而更容易避免错误。Where you are calculating the number of days by checking the month #, you have single = instead of ==.
Replace with:
The single = will assign the new value to your m variable and always evaluate to be true, so I assume you were seeing 31 in your day selector always. As a practice, I like to avoid this scenario by reversing the check. ie:
if(0 == x)
since you can't assign to 0 an accidental single = will result in a javascript error, making it easier to avoid the mistake.问题在于将 (=) 分配给变量 m 而不是比较 (==)
作为旁注,您可以重写脚本的某些部分。
LeapYear var - 这使用 2 个语句来减少它,但仍然保持可读。
删除最后一个选项(0索引)
The problem is with assigning (=) to variable m instead of comparing (==)
As a side note, you could rewrite some parts of your script.
leapYear var - this uses 2 statements to reduce it yet still keep it readable.
to remove the last options (0-indexed)