这是我的代码:
<script>
function monthassign()
{
document.getElementById("month").selectedIndex=0;
}
function isleap()
{
var yr=document.getElementById("year").value;
if ((parseInt(yr)%4) == 0)
{
if (parseInt(yr)%100 == 0)
{
if (parseInt(yr)%400 != 0)
{
//alert("Not Leap");
return "false";
}
if (parseInt(yr)%400 == 0)
{
//alert("Leap");
return "true";
}
}
if (parseInt(yr)%100 != 0)
{
//alert("Leap");
return "true";
}
}
if ((parseInt(yr)%4) != 0)
{
//alert("Not Leap");
return "false";
}
}
function dateassign()
{
var yr=isleap();
var mth=parseInt(document.getElementById("month").selectedIndex);
var dt=document.getElementById("date")
if(yr)
{
if(mth==2)
{
//alert(yr);
dt.options.length = 0;
for(i=1; i<30; i++)
{
dt.add(new Option(i,i), null) //add new option to end of "date"
}
return;
}
}
if(yr==false && mth==2)
{
//alert("Second fun");
dt.options.length = 0;
for(i=1; i<29; i++)
{
dt.add(new Option(i,i), null) //add new option to end of "date"
}
return;
}
if(mth==4 || mth==6 || mth==9 || mth==11)
{
dt.options.length = 0;
for(i=1; i<31; i++)
{
dt.add(new Option(i,i), null) //add new option to end of "date"
}
return;
}
else
{
dt.options.length = 0;
for(i=1; i<32; i++)
{
dt.add(new Option(i,i), null) //add new option to end of "date"
}
return;
}
}
</script>
我的问题是当变量yr包含false值时,第一个if条件在function dateassign()
中执行。当yr包含false值时,它应该将程序控制转移到代码块if(yr==false && mth==2)
,但它没有发生。即使条件为假,我也厌倦了执行特定条件的这个问题,以及为什么控制不进入特定的if条件。请帮我解决这个问题。在此先感谢。
答案 0 :(得分:2)
true
和false
与"true"
和"false"
不同。第一个是布尔值,但第二个是字符串。您应该返回布尔值,因此您需要将"true"
的每个实例替换为true
,将"false"
替换为false
。