如果Javascript中的条件,程序的流程不会进入

时间:2013-01-05 06:31:57

标签: javascript html dom

这是我的代码:

<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条件。请帮我解决这个问题。在此先感谢。

1 个答案:

答案 0 :(得分:2)

truefalse"true""false"不同。第一个是布尔值,但第二个是字符串。您应该返回布尔值,因此您需要将"true"的每个实例替换为true,将"false"替换为false