应该是这里有问题吧:
  var dateTable = window.frames("CalendarIframe").document.getElementsByTagName("Table")[0];alert窗口出来以后,table的位置被移动了,或者参照的offsetParent对象变化了。
你把alert放到他后面,估计就没有这个问题。你把全部的文件贴出来看看呢。

解决方案 »

  1.   

    http://files.cnblogs.com/coley/CaLendar.rar
    代码
      

  2.   

    放后面还是一样,只是在前面alert的时候才是正常的。
      

  3.   

    ??看代码运行把。很奇怪
    而且还有点不同的地方,如果浏览器是用http://虚拟目录/htmlpage.html运行就这样
    如果直接用ie打开运行
    在ie地址栏里面是
    C:\Documents and Settings\Administrator\桌面\CaLendar\HTMLPage.htm
    这样就不会的
      

  4.   

    看了LZ的程序,才知道是怎么了。我没有IIS的服务器,就是在本地打开了,发现了同样的问题。原因:
    alert的时候,显示按钮还没有显示出来,所以,这个时候的table的offwidth和显示按钮出来以后的oddwidth肯定不一样的。
    多了一个显示按钮呀。没有办法贴图给你,就只有文字了。希望你可以明白。还有,你给出的程序里面,alert(),你少写了一个a,写成了lert().
      

  5.   

    呵呵,笔误了
    function InitDiv()
    {
      calendar.Div.style.display = "block";
      var dateTable = window.frames("CalendarIframe").document.getElementsByTagName("Table")[0];
      calendar.Div.style.width  = dateTable.offsetWidth;
      calendar.Div.style.height = dateTable.offsetHeight;
      document.title= "w="+dateTable.offsetWidth+" h="+dateTable.offsetHeight
      InitDivLocation();
    }
    但不知道为何这样我去取的iframe里面的table的大小就不对呢?本想把div,iframe以及table的大小都设置为相同的,看来还有哪里不对,研究下
      

  6.   

    offsetWidth是相对位置,不是绝对位置。
    在你的程序里面,
    第一次点击的时候,有alert的时候,[显示]这个按钮居然消失了,嗬嗬,看来你重新设置过画面,所以这个时候,得到的offsetWidth就是没有[显示]这个按钮的相对位置,所以要靠左边一点。研究一下你的程序吧。
      

  7.   

    offsetWidth是相对位置,不是绝对位置。 
    在你的程序里面, 
    第一次点击的时候,有alert的时候,[显示]这个按钮居然消失了,嗬嗬,看来你重新设置过画面,所以这个时候,得到的offsetWidth就是没有[显示]这个按钮的相对位置,所以要靠左边一点。 
    ——————————————————————————————————————————————————————————
    消失是因为层里面的iframe遮盖上去了。坐标位置还是和以前的相同的。
      

  8.   

    嗬嗬,哦。
    你再慢慢看看吧。
    你可以看一下offsetParent这个时候是谁。