在使用这个js的时候,日历弹不出来,浏览器报错说 “行 596;char 6;错误 缺少对象;”可是我根本没有596行啊,aspx文件一共才三百多行,汗颜!哪儿去找这一行呢?
主要代码
<head runat="server">
<script language="javascript" type="text/javascript" src="../../js/popcalendar.js"></script></head>
<body>
<form id="form2" action="" runat="server" method="post">
<td align="right" style="height: 33px">Birthday</td>
<td style="height: 33px">
<input type="text"  id="txtBirthday" cssclass="select_shorter" runat="server" onclick='popUpCalendar(this, txtBirthday, "yyyy-mm-dd")' /></td>------------------------------------这一行在我的代码中是220行
  望高手赐教!谢谢!

解决方案 »

  1.   

    第一就是你引用的js的路径是否正确,还有就是那个popcalendar.js中是否有popUpCalendar这个函数,以及这个函数中的代码是否正确。
      

  2.   


    function popUpCalendar(ctl,ctl2,format) {

    var leftpos=0
    var toppos=0 if (bPageLoaded)
    {
    if ( crossobj.visibility =="hidden" ) {
    ctlToPlaceValue = ctl2
    dateFormat=format; formatChar = " "
    aFormat = dateFormat.split(formatChar)
    if (aFormat.length<3)
    {
    formatChar = "/"
    aFormat = dateFormat.split(formatChar)
    if (aFormat.length<3)
    {
    formatChar = "."
    aFormat = dateFormat.split(formatChar)
    if (aFormat.length<3)
    {
    formatChar = "-"
    aFormat = dateFormat.split(formatChar)
    if (aFormat.length<3)
    {
    // invalid date format
    formatChar=""
    }
    }
    }
    } tokensChanged = 0
    if ( formatChar != "" )
    {
    // use user's date
    aData = ctl2.value.split(formatChar) for (i=0;i<3;i++)
    {
    if ((aFormat[i]=="d") || (aFormat[i]=="dd"))
    {
    dateSelected = parseInt(aData[i], 10)
    tokensChanged ++
    }
    else if ((aFormat[i]=="m") || (aFormat[i]=="mm"))
    {
    monthSelected = parseInt(aData[i], 10) - 1
    tokensChanged ++
    }
    else if (aFormat[i]=="yyyy")
    {
    yearSelected = parseInt(aData[i], 10)
    tokensChanged ++
    }
    else if (aFormat[i]=="mmm")
    {
    for (j=0; j<12; j++)
    {
    if (aData[i]==monthName[j])
    {
    monthSelected=j
    tokensChanged ++
    }
    }
    }
    else if (aFormat[i]=="mmmm")
    {
    for (j=0; j<12; j++)
    {
    if (aData[i]==monthName2[j])
    {
    monthSelected=j
    tokensChanged ++
    }
    }
    }
    }
    } if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
    {
    dateSelected = dateNow
    monthSelected = monthNow
    yearSelected = yearNow
    } odateSelected=dateSelected
    omonthSelected=monthSelected
    oyearSelected=yearSelected aTag = ctl
    do {
    aTag = aTag.offsetParent;
    leftpos += aTag.offsetLeft;
    toppos += aTag.offsetTop;
    } while(aTag.tagName!="BODY"); crossobj.left = fixedX==-1 ? ctl.offsetLeft + leftpos : fixedX
    crossobj.top = fixedY==-1 ? ctl.offsetTop + toppos + ctl.offsetHeight + 2 : fixedY
    constructCalendar (1, monthSelected, yearSelected);
    crossobj.visibility=(dom||ie)? "visible" : "show" hideElement( 'SELECT', document.getElementById("calendar") );
    hideElement( 'APPLET', document.getElementById("calendar") ); bShow = true;
    }
    else
    {
    hideCalendar()
    if (ctlNow!=ctl) {popUpCalendar(ctl, ctl2, format)}
    }
    ctlNow = ctl
    }
    }
    以上是popUpcalendar的代码
      

  3.   

     请问popUpCalendar(ctl,ctl2,format)这里面几个参数是什么意思,我这里这样用对吗?onclick='popUpCalendar(this, txtBirthday, "yyyy-mm-dd")'
      

  4.   

    要注意js的格式,是UTF-8,还是GB2312,我以前碰到过,还有你web.config里面的设置.
      

  5.   

    是这句吗?<system.web><globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /></system.web>
    这句代码应该放在哪里呢?还有我发现了新的问题,在ie中弹不出来,但是在Netscape中能出来,可是老师出现在页面顶端,而不再输入框处,这是什么原因呢?
      

  6.   

    在脚本里面加上下面的一句话,就Ok了.
    <head runat="server"> 
    <script language="javascript" type="text/javascript" src="../../js/popcalendar.js" defer="defer"> </script>
    </head> 
      

  7.   

    我的解决方式是:
    在web.config中添加
    <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />,并且要去掉defer="defer",就OK了。