你可以用全局变量记录下最后一次操作的对象和事件
在这里好像只有checkbox,事件只有onclick,那么只要记录下对象就可以了想恢复是不是再触发一下这个对象的onclick事件就可以了chk.click(),就反过来了关于日期的常见操作
http://community.csdn.net//Expert/TopicView2.asp?id=4360247&datebasetype=now
js FAQ贴
http://community.csdn.net//Expert/TopicView2.asp?id=4356360&datebasetype=now
DHTML手册,js手册,dom手册下载,梅花雪的树和日期控件
梅雪香的日期控件.
http://community.csdn.net//Expert/TopicView2.asp?id=4356325&datebasetype=now

解决方案 »

  1.   

    就是相當於在word里執行ctrl+z的操作一樣的效果。
      

  2.   

    不不不,我要的效果是無限的恢復到上一次的操作相當於word裏ctl+z的操作一洋。不是隻保留一次的操作。
      

  3.   

    zhaoxiaoyang(梅雪香@深圳)能不能給緞詳細的代碼瓦
      

  4.   

    <script language="JavaScript">
    <!--
    var opStack = new Array();function fncSelectAll(obj){
    opStack.push(window.event.srcElement);
    if (obj.name=="AllBox")
    {
    var objS=document.getElementsByTagName("input")
    for (var j=1;j<objS.length;j++)
    {
    if (objS[j].type=="checkbox"){
    objS[j].checked=obj.checked;}
    }
    }
    else

    var objs=document.getElementsByName(obj.name+"Sub");
    //    if(!objs.length) objs.checked=obj.checked;
    for(var i=0;i<objs.length;i++)
    {
    objs[i].checked=obj.checked;
    }
    fncFirstCheckbox();
    }
    }function fncCheckIt(obj){
    opStack.push(window.event.srcElement);
    var objs=document.getElementsByName(obj.name+"Sub");
    for(var i=0;i<objs.length;i++){
    if (objs[i].checked==false){
    obj.checked=false;break;
    }
    else{
    obj.checked=true;
    }
    }
    fncFirstCheckbox();
    }function fncFirstCheckbox(){ var objs=document.getElementsByTagName("input")
    for(var i=1;i<objs.length;i++){
    if (objs[i].checked==false){
    objs[0].checked=false;break;
    }
    else{
    objs[0].checked=true;
    }
    }
    }function fncWhat(){
    if(opStack.length==0) return;
    var obj = opStack.pop();
    obj.click();
    opStack.pop();
    }
    </script><form name="frm1">
    <input type="checkbox" name="AllBox" id ="firstCheck"onclick="fncSelectAll(this);">all
    <hr width="1%" align="left" color="red">
    <br>
    A:<input type="checkbox" name="ABox" onclick="fncSelectAll(this);">
    <input type="checkbox" name="ABoxSub" onclick="fncCheckIt(ABox);">A1
    <input type="checkbox" name="ABoxSub" onclick="fncCheckIt(ABox);">A2
    <input type="checkbox" name="ABoxSub" onclick="fncCheckIt(ABox);">A3
    <input type="checkbox" name="ABoxSub" onclick="fncCheckIt(ABox);">A4
    <br/><br/>
    B:<input type="checkbox" name="BBox" onclick="fncSelectAll(this)">
    <input type="checkbox" name="BBoxSub" onclick="fncCheckIt(BBox);">B1
    <br/><br/>
    C:<input type="checkbox" name="CBox" onclick="fncSelectAll(this)">
    <input type="checkbox" name="CBoxSub"  onclick="fncCheckIt(CBox);">C1
    <input type="checkbox" name="CBoxSub"  onclick="fncCheckIt(CBox);">C2
    <br><br><br>
    <input type="button" value="回復前一操作" onclick="fncWhat();">
    </form>
    改了一下,不过有问题,因为你这里的checkbox有相互影响关系的,所以想做的完整需要设计一下算法. 起码应该是对前边的对象进行检查是不是会影响到当前要恢复的对象的状态.这又需要写代码来确定是两个对象是否有关联,反正比较复杂,我一半会儿也没想明白.
    你自己再想想吧
      

  5.   

    你的代码还有个bug,就是当ABC都选择的时候,不会自动选择ALL