- 浏览: 25377 次
- 性别:
- 来自: 北京
最新评论
-
梧栖凤:
得把未经处理的脚本分享出来啊!
跨浏览器可8方向拖拽剪裁框 -
percy30856:
好东西 正在弄这个玩意儿 参考学习了
Animate Baseclass -
percy30856:
菲哥 你的头像,应该换成未满18岁禁止查看
很棒的时间线控件 -
stoneskin:
:哭笑写javascript的也是猿。。。。我们很多猿都是从写 ...
核心只要两行即可实现添加或移除className -
jamesmos:
enix2212 写道tiannet 写道enix2212 写 ...
核心只要两行即可实现添加或移除className
在浏览器中用调试工具看调用结果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>javascript</title> </head> <body> <input type="button" value=" - " id="a" /> <input type="button" value=" + " id="b" /> <input type="button" value=" - " id="c" /> <input type="button" value=" + " id="d" /> <script type="text/javascript"> /*function a() { Do([].slice.call(arguments)); } function Do() { var temp = (arguments[0]),indicator = arguments.callee; indicator.stack = []; indicator.stack[0] = temp; } a({c:1,b:2}, 123, function(arg) { return arg+1; }); function dir() { console.log(arguments[0]); } dir(Do.stack[0][2](3));*/ function MemoryDo(step){ var indicator,that,fn,slice,args; ( indicator=arguments.callee, slice=[].slice ) if(!(this instanceof indicator)){return new indicator(step);} indicator.keys={}; that=this; this.stack=[]; this.index=0; fn = indicator.prototype; fn.constructor = indicator; fn.is=function(o){ return ({}).toString.call(o).slice(8, -1); } fn.slice=function(o,index){ return slice.call(o,index || 0); } fn.setIndex=function(number){ if(number<0 || this.is(this.index)!=='Number'){return}; this.index=number; } fn.getIndex=function(){ return this.is(this.index)==='Number' ? this.index : null; } fn.sign=function(){ return ('abcdefghijk'[Math.random().toFixed(1) * 10]+this.randomNumber(10000,10000000)); } fn.randomNumber=function(a,b){ return Math.round(Math.random()*b+a); } fn.dataBuffer=function(){ var temp,socureCall=arguments.callee.caller,flag=arguments[0][arguments[0].length-1],data; if (socureCall.arguments.length !== arguments[0].length || indicator.keys[flag]==='used') return; data=this.stack; if(data.length===this.step){data.shift()}; temp=data[data.length]=[]; temp[temp.length]=(this.slice(arguments[0],0)).concat(this.sn); temp[temp.length]=arguments.callee.caller; indicator.keys[this.sn]='used'; this.index=this.stack.length; } fn.redo=function(){ //var data=indicator.stack[indicator.stack.length-1]; //console.log(data); if(this.index===this.stack.length){ this.re=-1;return; }else{ this.re=1; this.virtualDo(this.index+=1); } } fn.undo=function(){ //var data=indicator.stack[indicator.stack.length-1]; //console.log(data); if(this.index===0){ return; }else{ this.un=1; this.virtualDo(this.index-=1); } } fn.virtualDo=function(){ var data=this.stack,i=0,len=this.index,temp; for(;i<len;){ temp=data[i++]; temp[1].apply(undefined,temp[0]); } } this.step=this.is(step)==='Number'? step : 10; this.sn=this.sign(); } var a=MemoryDo(4); var b=MemoryDo(2); function doIt(o,fn){ a.dataBuffer(arguments); fn(arguments); b.dataBuffer(arguments); } doIt({a:1,b:2,c:3},function(a){ console.dir(a); }); doIt({b:2,c:3},function(a){ console.dir(a); }); doIt({c:3},function(a){ console.dir(a); }); doIt({d:4},function(a){ console.dir(a); }); document.getElementById('a').onclick=function(){ a.undo(); } document.getElementById('b').onclick=function(){ a.redo(); } document.getElementById('c').onclick=function(){ b.undo(); } document.getElementById('d').onclick=function(){ b.redo(); } </script> </body> </html>
发表评论
-
[javascript]9宫格拖拽拼图游戏 puzzle
2012-04-29 09:51 16431.跨浏览器,主流浏览器都可以运行2.纯javascript开 ... -
避免悲剧 密码生成器
2011-12-22 15:35 786最近被暴库的很多,密码安全成为重大问题!如何避免简单密码呢?还 ... -
jQuery创建实例与原型继承揭秘
2011-12-20 23:57 811在普通情况下 ... -
[Javascript]单例模式(singleton )
2011-12-16 15:23 1358Javascript中大家都很习惯用new运算符创建实例。现在 ... -
javascript1.7新语法
2011-12-13 18:30 9211.yield 关键字 Yield的作用与return 差不多 ... -
duffsDevice 高速版
2011-11-25 17:21 838function duffsDevice(items, f ... -
ECMAScript.js2
2011-11-07 11:18 1385package { public native functio ... -
仅限正整数输入
2011-10-27 15:35 914修正了拖拽文本进输入框问题 2011.11.14 &l ... -
Another JavaScript quiz
2011-08-19 18:34 687测试题来自《Another JavaScript quiz》P ... -
跨浏览器可8方向拖拽剪裁框
2011-08-15 20:01 980<!DOCTYPE html PUBLIC &quo ... -
选项卡
2011-08-12 17:36 934<!DOCTYPE html PUBLIC &quo ... -
scroll base
2011-08-04 14:25 936开发版,水平方向已完成,垂直方向没测,可以跨浏览,滚动多个当前 ... -
拖拽排序列表单例
2011-07-27 11:17 1212<!DOCTYPE html PUBLIC &quo ... -
Animate Baseclass
2011-07-12 15:47 1243以下代码仅供参考,请下载附件代码,应该是文本编辑器过滤掉了某些 ... -
很棒的时间线控件
2011-06-24 18:52 1765原生态javascript,希望大家能喜欢 functio ... -
fade方法
2011-05-27 10:12 815function fadeOut(steps){ ... -
核心只要两行即可实现添加或移除className
2011-04-29 11:10 1816<div id="abc" cl ... -
让函数有记忆能力
2011-04-28 15:34 737function addEvent(elem,evType ... -
可以跳动的手风琴 Accordion
2011-04-13 15:02 847<!DOCTYPE html PUBLIC &q ... -
javascript new 关键字的运行原理
2011-04-06 17:33 1580function javascriptNew(t){ a= ...
相关推荐
redux-undo-redo 用于Redux的撤消重做软件包 该软件包的灵感主要来自开发的。 该软件包将还原重做历史记录添加到还原状态。 对于每个不可撤消的操作,您必须提供其还原操作。 它还支持分组操作,使您可以一步一步...
src =" node_modules/undo-redo-vuex/dist/undo-redo-vuex.min.js " > </ script > 模块 import undoRedo from "undo-redo-vuex" ; 用法 作为的标准, undo-redo-vuex可以用于以下设置: 如何在商店模块中...
undo-redo,撤消重做数据结构。 版权所有:copyright:2020-2021 Subendra Kumar Sharma。 版权所有。 ( ) 该文件是撤消重做的一部分。 undo-redo是免费软件:您可以根据自由软件基金会发布的GNU通用公共许可证的...
这是一个非常小的(大约 100 行)javascript 库,它允许利用 HTML5 Localstorage 来实现页面上数据的撤消、重做和持久化。 它是如何开始的 我正在为我们的费用记录创建一个数据输入表。 我很快发现意外删除、关闭...
商店 轻量级Vue 3组成API兼容的商店模式库。 提供了一个在功能方面与VueX相当的简单替代方案: 简单的API学习; 只有1个功能来创建商店 在本地和全局商店实例之间选择 公开状态为readonly以防止通过意外引用进行...
`UndoRedoStack` 类管理两个堆栈,并提供了`doOperation`、`undo`和`redo`方法来执行操作、撤销和重做。实际使用时,你需要根据具体业务需求来扩展这些基础结构,比如处理更复杂的操作状态或者限制撤销/重做的次数。...
UndoRedo.js 功能强大且简单的Javascript库提供了撤消/重做功能的历史记录。 就像一台时光机! :one_o’clock:安装: Node.js : 使用以下命令来安装节点模块: npm install undoredo.js --save 然后简单地要求它: ...
"undo-redo-algorithm" 提供了一个简单实现这一功能的方法,尤其适用于JavaScript环境。这里我们将深入探讨撤消/重做的基本原理,以及如何在JavaScript中实现这一算法。 撤消/重做算法的核心思想是记录和存储用户...
gfk:undo-redo 一个附加的Meteor软件包,用于在客户端上撤消,重做操作。安装在“流星”应用目录中,输入: $ meteor add gfk:undo-redo用法创建一个UndoRedo.Manager并注册动作。 var manager = new UndoRedo . ...
角度撤消重做 这个存储库展示了如何使用在 AngularJS... git clone https://github.com/bobey/angular-undo-redo.git && cd angular-undo-redo npm install bower install grunt 并打开public/index.html 。 就是这样!
单击下面预览项目Create React App入门该项目是通过。可用脚本在项目目录中,可以运行:npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何...
在`undo-redo-master`这个项目中,我们可以期待看到一个完整的Vue应用示例,它演示了如何在实际代码中实现上述概念。该项目可能包含以下文件: - `main.js`:Vue应用的入口文件,初始化Vue实例。 - `App.vue`:Vue...
Vuex历史 Vuex存储的撤消/重做功能。 特征 Vue友好。 您可以在所需的时间手动拍摄状态快照 vuex-history监视商店状态中的特定属性。 您可以有多个历史列表(例如,主视图的历史列表+侧面板的历史列表) ...
meteor add babrahams:undo-redo 该包公开了一个名为tx的对象,该对象具有使撤消/重做堆栈运行所需的所有方法。 您可以使用包含{tx: true}的选项散列进行写入,如下所示,使它们可以撤消/重做(请注意,不支持...
1. **React**: React是Facebook开源的一个JavaScript库,用于构建用户界面,特别是单页面应用。它的核心思想是组件化,将UI拆分为可复用的独立组件,每个组件都有自己的视图和逻辑。React通过虚拟DOM(Virtual DOM)...
在JavaScript中,命令模式可用于实现 undo/redo 功能。 8. **模版方法模式**:在抽象类中定义一个算法的框架,允许子类在不改变算法结构的情况下重写算法的特定步骤。 9. **适配器模式**:使接口不兼容的对象能够...
该编辑器提供了代码编辑、彩色显示代码、无限次 Redo 和 Undo、JavaScript 和 HTML 模板等功能。但是,该编辑器的功能相对较弱。 4. SurfMap JavaScript SurfMap JavaScript 是一款帮助开发者建立 JavaScript 站点...
在JavaScript编程中,撤销(Undo)功能是一种常见的需求,它允许用户取消最近的操作,返回到之前的状态。在本文中,我们将探讨如何使用JavaScript实现撤销功能,主要基于给出的"undo_demo"示例来讲解。 首先,理解...
import { undoable , UNDO , REDO } from "@storeon/undo/full" ;const store = createStore ( [ /* all your modules */ undoable ,] ) ;// now you can use UNDO and REDO with dispatchdispatch ( UNDO ) ;安装...
5. ** undo/redo 功能**:通过维护一个操作历史栈,实现撤销和重做功能,这是在线编辑器中的常见需求。 6. **富文本编辑**:编辑器可能支持添加图片、链接、列表等富文本元素,这涉及到HTML标签的生成和处理。 7. ...