呵呵,自己找到问题了,是PrintTable(main)要这样写PrintTable('main')

解决方案 »

  1.   

    有个问题像问下就是,为什么ie这样写PrintTable(main) 都可以调用,而firefox下不行
      

  2.   

    你的代码中有多处的错误。
    就函数PrintTable来说,参数名虽然叫ID.
    但内部都是把他做为对象来访问的.
    因此,你加入引号后正确是很奇怪的.
    另外,通过ID直接访问对象方法也是不推荐的.
    比如好的方法是使用 document.getElementById,function PrintTable(obj){
        var mStr;
        mStr = window.document.body.innerHTML;
        var mWindow = window;
        window.document.body.innerHTML = obj.innerHTML;
        mWindow.print();
        window.document.body.innerHTML = mStr;
    }pritTable(document.getElementById('main'));或者,这样做.
    function PrintTable(id){
        var obj = document.getElementById(id);
        var mStr;
        mStr = window.document.body.innerHTML;
        var mWindow = window;
        window.document.body.innerHTML = obj.innerHTML;
        mWindow.print();
        window.document.body.innerHTML = mStr;
    }pritTable('main');另外你的代码中还有多处明显的错误.
    比如,你把foreach标签放到了body的外边.
    这样就会在循环中生成多个body体.
    类似这样的错误楼主查一下吧.
      

  3.   

    <html:html>放的地方也不正确。
    楼主最好对照浏览器上生成的代码进行一下确认。
      

  4.   


    因为你传递的是是字符串,并不是变量,所以你用PrintTable(main)是错的如果你是这样的
    <body 
    onload="AreaAutoHeight.iniAutoRow('Textarae');var main='main'; PrintTable(main);close()"> 
    那你用PrintTable(main)是正确的,否则就是错误的在IE下你不加引号能正确我觉得奇怪我纠正syukugai 几点“就函数PrintTable来说,参数名虽然叫ID. 
    但内部都是把他做为对象来访问的. 
    因此,你加入引号后正确是很奇怪的. ”这个说法不对的,在IE下是可以直接Id.innerHTML这么写的,是应该加引号,不加引号不正确的才对只是觉得奇怪为什么在IE下你不加引号能正确当然不建议Id.innerHTML这种写法,因为不兼容
      

  5.   


    还真不知道 'main'.innerHTML这样是正确的。
    刚刚用这个理论在我的机器上验证了一下。
    结果证明,在这个理论下我机器上的IE6和FF3全部都是坏掉的。
      

  6.   


    的确,'main'.innerHTML 这样写是不对的,我刚刚在ie7下也试过了
      

  7.   

    你直接'main'.innerHTML 这个当然是不对的!!但是用id.innerHTML 是正确的啊
      

  8.   


    这个说法不对的,在IE下是可以直接Id.innerHTML这么写的,是应该加引号,不加引号不正确的才对你的这句话该怎么理解,愿听其详?
      

  9.   

    在IE下是可以直接Id.innerHTML这么写的是没错吧
    但是他传递的是字符串,当然要加ID引号,不加引号,那传递的就是空值
      

  10.   

    不明白你在谈什么问题?
    难道下面这样的代码在你的浏览器上运行是正确的?function PrintTable(Id){
       ......
       window.document.body.innerHTML = Id.innerHTML;
       ......
    }PrintTable('main');
      

  11.   

    我说得是在IE下是可以直接Id.innerHTML这么写的并没有说放在作为参数然后再Id.innerHTML这么写,你说他加入引号是错误的,那当然是不对的,因为他传递的不是变量或者变量是空值也许我开始理解错你的意思你是想说Id作为参数时再Id.innerHTML这么写就是错的,还以为你说他加入引号是错误的
      

  12.   

    我说得是在IE下是可以直接Id.innerHTML这么写的并没有说放在作为参数然后再Id.innerHTML这么写,你说他加入引号是错误的,那当然是不对的,因为他传递的不是变量或者变量是空值也许我开始理解错你的意思你是想说Id作为参数时再Id.innerHTML这么写就是错的,还以为你说他加入引号是错误的
      

  13.   

    HOHO,
    明白你的想法了。
    另外,IE下是支持直接通过 ID名访问对象的。
    也就是说 main.innerHTML 在IE是好用。
    FF下不支持这样的用法以。