A.js中有两个函数 X与Y ,X调用Y却不行,如果把 Y 放到页面中反倒能调用,不知是什么原因?
  请教老师如何解决?

解决方案 »

  1.   

    重命名函数Y,可能与js内置函数重名。
      

  2.   


    function A(sDate){     if  (sDate!=="")
         {
          var termarray=new Array()
      termarray=sDate.split("-");
      if (termarray.length!=3)
         return false;
      else
       {
        for(jjj=0;jjj<termarray.length;jjj++)
      {
       
         if(termarray[jjj]=="")
       {
         return false;
      // break;
       }
         else if(B(termarray[jjj])==false)
          {
          return false;
      // break;
       }
      }
       }var r=/\d{4}(?:-\d{1,2}){0,2}/
    //正则表达式,判断是否为yyyy-mm-dd,yyyy-mm,yyyy格式
    if(sDate.match(r)==sDate){
      var arr=sDate.split("-")
      switch(arr.length){
      //根据不同的yyyy-mm-dd,yyyy-mm格式判断年月日数字是否正确
       case 3:
        var tmpDate=new Date(arr[0],arr[1]-1,arr[2]);
        if(tmpDate.getMonth()==(arr[1]-1) && tmpDate.getFullYear()==arr[0]) return true;
        break;
       case 2:
        if(arr[1]<13) return true;
        break;
       default:
        return false;
      }
    }
    return false;
    }
    }function B(checkStr) 
    {
      var checkOK = "0123456789";
      var allValid = true;
      for (i = 0; i < checkStr.length; i++) 
      {
      
        ch = checkStr.charAt(i);
        if (checkOK.indexOf(ch) == -1) 
        {
          allValid = false;
          break;
        }
        
        
      }
      return(allValid);
    }
      

  3.   

    把函数A和函数B换个位置,B放前头
      

  4.   

    上面的取消.试了下,是你的代码有几处问题,把我的复制过去,放JS里就可以了.
    function A(sDate) {
    if (sDate !== "") {
    var termarray = new Array();
    termarray = sDate.split("-");
    if (termarray.length != 3) return false;
    else {
    for (jjj = 0; jjj < termarray.length; jjj++) { if (termarray[jjj] == "") {
    return false;
    // break;
    } else if (B(termarray[jjj]) == false) {
    return false;
    // break;
    }
    }
    } var r = /\d{4}(?:-\d{1,2}){0,2}/
    //正则表达式,判断是否为yyyy-mm-dd,yyyy-mm,yyyy格式
    if (sDate.match(r) == sDate) {
    var arr = sDate.split("-");
    switch (arr.length) {
    //根据不同的yyyy-mm-dd,yyyy-mm格式判断年月日数字是否正确
    case 3:
    var tmpDate = new Date(arr[0], arr[1] - 1, arr[2]);
    if (tmpDate.getMonth() == (arr[1] - 1) && tmpDate.getFullYear() == arr[0]) return true;
    break;
    case 2:
    if (arr[1] < 13) return true;
    break;
    default:
    return false;
    }
    }
    return false;
    }
    }function B(checkStr) {
    var checkOK = "0123456789";
    var allValid = true;
    for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i);
    if (checkOK.indexOf(ch) == -1) {
    allValid = false;
    break;
    } }
    return (allValid);
    }在另外页面里引用执行,没问题
    <script type="text/javascript" src="a.js">
    </script><script type="text/javascript">
    alert(A("2002-10-01"));
    </script>