于是有了这个:
[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支持才行),但遇到了一个问题,不能继承(反正到目前我还没想到一个继承的方法),当时实在有些无语。这种方法的确有局限性。
总结一下:编码前一定要好好规划一下,明确到底要使用那一个/几个模式,或确定要不要使用模式。
最后:如果我所写的有任何不对的地方或有任何建议请指正出来,这也是我写博文的目的。
[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支持才行),但遇到了一个问题,不能继承(反正到目前我还没想到一个继承的方法),当时实在有些无语。这种方法的确有局限性。
总结一下:编码前一定要好好规划一下,明确到底要使用那一个/几个模式,或确定要不要使用模式。
最后:如果我所写的有任何不对的地方或有任何建议请指正出来,这也是我写博文的目的。
标签:
javascript,就地编辑
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
狼山资源网 Copyright www.pvsay.com
暂无“javascript 就地编辑实现代码”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。