我有一个画面A,页面js部分定义了几个变量,代码如下:    var aArray = new Array(10);
    var bArray = new Array(10);
    var cArray = new Array(10);
    var sSelectIndex = 0;
    var rSelectIndex = 0;
    
    var dArray = new Array(10);
    var eArray = new Array(10);
    var fArray = new Array(10);
    var ssSelectIndex = 0;
    var rrSelectIndex = 0;
    
    var serCusFlg = 0;    for(var a1 = 0; a1 < 10; a1 ++) {
        aArray[a1] = "";
        dArray[a1] = "";
    }
    for(var b1 = 0; b1 < 10; b1 ++) {
        bArray[b1] = new Array(10);
        eArray[b1] = new Array(10);
        for(var b2 = 0; b2 < 10; b2 ++) {
            bArray[b1][b2] = "";
            eArray[b1][b2] = "";
        }
    }
    
    for(var c1 = 0; c1 < 10; c1 ++) {
        cArray[c1] = new Array(10);
        fArray[c1] = new Array(10);
        for(var c2 = 0; c2 < 10; c2 ++) {
            cArray[c1][c2] = new Array(30);
            fArray[c1][c2] = new Array(30);
            for(var c3 = 0; c3 < 30; c3 ++) {
                cArray[c1][c2][c3] = "";
                fArray[c1][c2][c3] = "";
            }
        }
    }也就是几个数组变量,画面初期化进来时都赋值为空,但是在画面上有一些操作,会对这些数组进行赋值,然后点击提交后如果check不过会迁移error画面,error画面点返回按钮后做的是history.go(-1)操作,直接返回A画面,数组里的值都没了,都变成空了,为什么没有记住呢,难道history.go(-1)返回回来后是画面初期化的状态?后面的操作都记不住?但是为什么画面上text框里的值是有的呢,初期化为空的,填了值进去返回回来的时候值还在呢。为什么js变量里的值记不住呢?

解决方案 »

  1.   

    可能不太理解楼主的意思,这是我在struts2 里面当提交不成功时返回  输入页面,显示以前“输入”的值
    <input name="title" type="text"  value="${title}"/>
      

  2.   

    你使用history.go(-1);等于把页面做了一次刷新,数组里面的值当然会没有在了,至于为什么刷新后输入框还有值,使用history.go(-1)就是会这样;
      

  3.   

    浏览器以栈的形式保存你浏览的数据,实际上保存的也就是HTML数据,在浏览器的临时记录里面可以找到的。
    history.go(-1), 是从浏览器缓存中,也就是栈中直接提取, 试想之下, 浏览器还会保存你的 js 里面的变量值吗, 至于那些表单数据还保存, 那是生成静态页面的结果。如果想重新获取 js里面的变量,貌似也没有其他的办法,看能不能把变量保存到服务器中,或在页面上做个跳转,不要用 history.go() 的方式
      

  4.   

    刚想说用hidden可以,原来你自己发现了,哈哈
      

  5.   

    我以前也遇到过同样的问题,用js动态添加的数组值都为空,我把值都保存session中了