如果在点按一个按钮激发某事件后,可能发现做错了,这时如果能提供一个撤销按钮,返回到事件之前的状态该如何呢?跪求高手帮忙。
比如在一个div块中有一个table,可能用js在前端做了许多修改添加等工作,但当点按某按钮时可能又会执行一段js,在执行这段js之前,我想做一个备份工作,就是保留div块中所有内容(这些内容是js动态加上的,而不是网页原有的),当撤销时,能把它又原样调出来。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 3</title>
</head>
<body>
<div id="div_myTable">
<table id="myTable">
<tr id="myTH1" >
<td > 1</td>
<td ><input type="text" id="1-1" size="4" /></td>
<td ><input type="text" id="2-1" size="10" /></td>
<td ><input type="text" id="3-1" size="10" /></td>
<td ><input type="text" id="4-1" size="10" /></td>
<td ><input type="text" id="5-1" size="10" /></td>
<td ><input type="text" id="6-1" size="10" /></td>
<td ><input type="text" id="7-1" size="10" /></td>
<td ><input type="text" id="8-1" size="10" /></td>
</tr>
</table>
</div>
<p><input type="button" value="按钮" name="B1" onclick="somedo()"> <input type="reset" value="撤销" name="B2" onclick="redo()"></p>
<!--/////////////////<div id="div_myTable">/////////////////////// -->
</body>
</html>
------解决方案--------------------
可以使用$.data()方法来实现啊,
比如<div id="div1"> <table><tr><td></td></tr></table></div><span id="do1">do</span><span id="undo1">undo</span>
当点击do 时 table 添加一行,在点击之前缓存table对象,
$("#do1").click(function(){
var index = $(this).data("index");
index = index ? index + 1 : 0; //记录次数
$(this).data("index",index);
var table = $("#div1").children("talbe");
$(this).data(“table”+index,table.clone(true) ); //缓存拷贝对象
table .append("<tr><td></td></tr>");
});
//回退
$("#undo1").click(function(){
var index = $("#do1").data("index");
if (!index) {
return;
}
$("#div1").empty().append($("#do1").data(“table”+index)); //重新加载缓存的对象
$(“#do1”).data(“table”+index,"").data("index",index - 1); //把已经回退的对象清空,计数减一,
});
如果只需要回退最开始,就不需要计数就是了。
------解决方案--------------------
笨一点的方法 你可以先隐藏一个div内容就是原本div内容 最后你撤销的时候把隐藏的div内容在复制给现在div 你可以试试