于是有了这个:
无标题文档
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]这个是用类似Java的方式写的,有私有方法,私有属性,公有方法(以前最喜欢用的方法)。 也就是这种类似的形式: 复制代码 代码如下: var Deditor=(function(){ //private method //private prototype return function(){ //public method }; })(); 我先是把大体的框架写出来: 复制代码 代码如下: var Deditor=(function(){ //private method function addEvent(){}//添加事件 function fixEvent(){}//兼容event对象 function addLinkCss(){}//添加外联样式 function createEditorFile(){}//创建必要的HTML function addEvents(){}//为新创建元素绑定事件 function fileToContext(){}//编辑转文本 function contextToFile(){}//文本转编辑 function save(){}//保存 function cancel(){}//放弃 //private prototype var currentContext;//当前编辑内容 var html;//新创建的html对象 var url;//AJAX请求,保存内容 var currentElem;//当前所在元素 var elems=[];//所有可就地编辑的元素 var elemItems={};//所有新创建的节点 return function(){ //public method this.thenEffect(){}//设置所有可就地编辑的元素 this.setUrl(){}//设置url值 this.setCssHref(){}//设置外联css的href } })(); 剩下的工作就是把所有的方法给实现了,并完善它。 也许是应为我第一个认真学习的语言是java,所有这种形式的编写风格使我由始至终思路清晰,到此顺利完成了 接下来调试的过程中遇到了两个问题,在这里有必要说一下,在以后的编程中可能会遇到 一个是事件的冒泡引起的: 当点击文本框,或按钮时可编辑域自动隐藏了,原因是父节点捕获了鼠标点击事件,并执行了fileToContext()函数 第二个是,在IE下用innerHTML来清除内容,会把子节点从内存中彻底移除,但如果你用alert(html)检测时,它还会显示此为node节点对象。 所有最好用removeNode来移除节点,如果你打算以后还用的话。 至此'就地编辑'基本完成了(还需要AJAX支持才行),但遇到了一个问题,不能继承(反正到目前我还没想到一个继承的方法),当时实在有些无语。这种方法的确有局限性。 总结一下:编码前一定要好好规划一下,明确到底要使用那一个/几个模式,或确定要不要使用模式。 最后:如果我所写的有任何不对的地方或有任何建议请指正出来,这也是我写博文的目的。
推荐阅读
jquery validate.js表单验证的基本用法入门
这里转载一篇前辈写的文章,在我自己的理解上修改了一下,仅作记录。 先贴一个国内某大公司的代码: 复制代码 代码如下: <script type="text/javascript"> function lang(key) { mylang = { 'ls_input_myb': '请输>>>详细阅读
本文标题:javascript 就地编辑实现代码
地址:http://www.17bianji.com/kaifa2/JS/26449.html
1/2 1