当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 事件驱动的JScript面对象编程(例)

Javascript
JavaScript入门教程 Cookies
IE8 浏览器Cookie的处理
JS 强制设为首页的代码
JS之日历实践附实现代码
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
JAVASCRIPT keycode总结
javascript 学习之旅 (1)
javascript 学习之旅 (2)
javascript 学习之旅 (3)
[Web]防止用户复制页面内容和另存页面的方法
让网页根据不同IE版本显示不同的内容
让input不可点击的另一种方法
fckeditor 获取文本框值的实现代码
jquery插件jbox使用iframe关闭问题
js获取提交的字符串的字节数
JS IE和FF兼容性问题汇总
js函数使用技巧之 setTimeout(function(){},0)
javascript 模拟select下拉列表特效
js 静态HTML表格排序功能实现
JavaScript 克隆数组最简单的方法

Javascript 中的 事件驱动的JScript面对象编程(例)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-10   浏览: 366 ::
收藏到网摘: n/a

说完了事件驱动的JScript面对象编程。我们来看看一个具体的例子:
假如我们要在网页上做一种可编辑的Label。正常情怳下它像一般的文本一样。当用鼠标点击它时就变成输入框并可编辑文本的内容。然后当它失去焦点时又恢复成正常文本的样子。

程序运行的例子如下:

点击文字看看。

程序的源代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<script language="jscript">
function EditableText(_owner){
this.owner = _owner;

this.edit = document.createElement("input");
this.edit.type = "text";
this.edit.onblur = this.onEditBlur;
this.edit.onclick = this.onEditClick;
this.edit.obj = this;

this.span = document.createElement("span");
this.span.innerText = "EditableText";
this.span.obj = this;
this.span.onclick = this.onSpanClick;

this.owner.appendChild(this.span);
}
function EditableText.prototype.onEditClick(){
event.cancelBubble = true;
}
function EditableText.prototype.onEditBlur(){
event.cancelBubble = true;
var self = this.obj;
self.span.innerHTML = "";
self.span.innerText = self.edit.value;
}
function EditableText.prototype.onSpanClick(){
event.cancelBubble = true;
var self = this.obj;
self.edit.value = this.innerText;
this.innerHTML = "";
this.appendChild(self.edit);
self.edit.focus();
}
////////////////////////////////////////////////////////////
function init(){
for(var i=0;i<20;i++){
new EditableText(document.body);
var br = document.createElement("br");
document.body.appendChild(br);
}
}
init();
</script>

</body>
</html>

注意程序后面的init函数。里面的new EditableText(document.body)只是建立了对象。但是我并无保存建立的对象的引用。而是让对象自己去管理自己。对象的行为都是由事件来驱动的(onclick和onblur),而无须别外的辅助代码。