最近做了一个项目,是基于FrameSet框架的,为了实现锁屏的功能,其中在页面里有这一条JS语句:Parent.top_frame.document.all.T1 = 600;也就是在一个页面中去访问框架内另一个页面的控件元素的值.但在运行时有时会出现这么一个错误:'Parent.top_frame.document.all.T1 '为空或不是对象,但也不是每次运行都会出现错误,有时不会有错误出现,请问难道是不能这样引用吗,但是确实可以这样用,也是有效的,请高手指!

解决方案 »

  1.   

    parent.parent.bottom.document.getElementById('Cust_Name').value='600';
      

  2.   

    一级一级找原因alert(parent);
    parent是否为[object]
    parent.top_frame是否为[objct]
    parent.top_frame.document是否为[object]后面关系到浏览器兼容性等等问题,我记不得详细了要看某个javascript对象的属性方法等内容时,自己用这个方法试试:
    假设parent为存在的[object]var str = '';
    for (var i in parent) {
      str += i + ' ';
    }
    alert(str);
      

  3.   

    还有一种情况就是你这句代码parent.top_frame.document.all.T1 = 600;是不是在启动的时候执行的,如果是的,那可能就有问题了,因为当你执行的时候,T1还没有加载好,就是说对象还没有生成,拟就访问他了,当然要报错“为空或不是对象”,你可以使用循环判断当不是空的时候再去执行,获取加上try,catch{}屏蔽掉错误就可以了
      

  4.   

    document.all这种构造好象是IE的私有语法,不符合标准一般都用getElementById或frames[".."]这种方法
      

  5.   

    WNASP(这年头什么都“和谐”) 兄说得对,很可能是这种问题,如果我进行操作应该可以吧:
    if(parent.top_frame.document.all.T1 != null)
        {
    parent.top_frame.document.all.T1.value = 600;
    }
    这样应该可以避免出错.