我为公司写了一个读取Excel内容到ftl页面的JS函数:readExcel(),然后又写了一个在读取Excel前在页面显示一句提示:正在解析Excel文档内容,请稍候……的函数:loadingMsg()。
我在readExcel()方法内调用loadingMsg(),但readExcel()内的其他方法都执行正常,Excel也能解析并显示,唯独loadingMsg()方法不能完全执行。如果在loadingMsg()方法内加上一句:alert("");这个对话框是可以弹出的,其他的内容还是不执行。不知道为什么。

将loadingMsg()方法单独抽出来这样写:
<input type="button" value="解析" onclick="loadingMsg(),readExcel()" />还是不行。
还有一个奇怪的问题,当Excel文件内容较多时,点击解析按钮后会出现假死状态知道解析完成并显示在页面上才恢复。
个人的想法:是不是要整个线程什么的啊?小白虚心求指导,谢了~

解决方案 »

  1.   

    上代码吧:
    JS部分
    /**显示信息的方法,这个方法不能完全执行*/
    function loadingMsg(){
    //alert("");//这一句是可以执行的,但下一句就执行不了
    document.getElementById("loadMsg").innerHTML="正在加载Excel文档,请稍候......";
    }
    /**去除信息的方法*/
    function clrLoadingMsg(){
    document.getElementById("loadMsg").innerHTML="";
    }
    /**读取Excel文档的方法,这个方法也不能执行*/
    function readExcel(){
    loadingMsg();//加载前显示信息,不能执行
    //省略读取Excel的代码,可以执行
    clrLoadingMsg();//加载完成后去除显示信息,不能执行
    }
    html部分:
    <span id="loadMsg"></span><input type="button" value="解析" onclick="readExcel()" /大家帮我看看有问题吗?
      

  2.   

    document.getElementById("loadMsg").innerHTML="正在加载Excel文档,请稍候......";
    alert(0); // 看看效果已经执行了,只是执行的太快了。
      

  3.   

    这下loadingMsg()方法执行了,但clrLoadingMsg()方法却不执行了。唉~想不通啊
      

  4.   

    我猜是不是这样:页面加载速度很快,以致刚执行完loadingMsg(),还没来及innerHTMl就继续执行下面的代码了,读取完Excel又调用了clrLoadingMsg()将innerHTMl进去的字给去了,所以造成没看到效果的情况。
    我现在的想法是在调用readExcel()之前先调用一个类似线程中sleep()的方法,让loadingMsg()去innerHTML完了在继续执行下面的。正在度娘中……大家继续关注啊,也谢谢Acesidonu 的启发。
      

  5.   

    办法终于想到了,我新增了一个方法read()
    {
    loadingMsg();
    setTimeout("readExcel()",100);
    }
    最后clrLoadingMsg()在readExcel()内调用。啊~不容易啊!