javascript 就地编辑实现代码

 更新时间:2010年05月10日 11:49:26   作者:  
最近正在看《javascript设计模式》,其中有一个'就地编辑'的示例,用来表现不同的继承方式,看完之后想自己凭理解写一个类似的东西。
于是有了这个:

[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支持才行),但遇到了一个问题,不能继承(反正到目前我还没想到一个继承的方法),当时实在有些无语。这种方法的确有局限性。

总结一下:编码前一定要好好规划一下,明确到底要使用那一个/几个模式,或确定要不要使用模式。

最后:如果我所写的有任何不对的地方或有任何建议请指正出来,这也是我写博文的目的。

相关文章

  • 浅谈js中同名函数和同名变量的执行问题

    浅谈js中同名函数和同名变量的执行问题

    下面小编就为大家带来一篇浅谈js中同名函数和同名变量的执行问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • require简单实现单页应用程序(SPA)

    require简单实现单页应用程序(SPA)

    下面小编就为大家带来一篇require简单实现单页应用程序(SPA)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • ES6所改良的javascript“缺陷”问题

    ES6所改良的javascript“缺陷”问题

    这篇文章主要介绍了ES6所改良的javascript“缺陷”问题的相关资料,需要的朋友可以参考下
    2016-08-08
  • 深入探究JavaScript中for循环的效率问题及相关优化

    深入探究JavaScript中for循环的效率问题及相关优化

    这篇文章主要介绍了JavaScript中for循环的效率问题及相关优化,文中谈到了Underscore.js库及循环在各个浏览器js解释器下的表现,需要的朋友可以参考下
    2016-03-03
  • 在 JavaScript 中如何更改字符串字符

    在 JavaScript 中如何更改字符串字符

    在本文中,我们将创建自定义函数,借助不同示例的默认字符串方法,在我们想要的任何位置替换或更改字符串中的字符,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-07-07
  • javaScript代码飘红报错看不懂?读完这篇文章再试试

    javaScript代码飘红报错看不懂?读完这篇文章再试试

    这篇文章主要介绍了javaScript代码飘红报错看不懂?读完这篇文章再试试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • webpack4 处理SCSS的方法示例

    webpack4 处理SCSS的方法示例

    这篇文章主要介绍了webpack4处理SCSS的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 详解JavaScript执行模型

    详解JavaScript执行模型

    这篇文章主要介绍了JavaScript执行模型的相关资料。帮助大家更好的理解和学习JavaScript,感兴趣的朋友可以了解下
    2020-11-11
  • js跑步算法的实现代码

    js跑步算法的实现代码

    这篇文章主要是对js跑步算法的实现代码进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • JS 对象属性相关(检查属性、枚举属性等)

    JS 对象属性相关(检查属性、枚举属性等)

    这篇文章主要介绍了JS 对象属性相关(检查属性、枚举属性等),需要的朋友可以参考下
    2015-04-04

最新评论