关于js封装框架类库之属性操作
在对DOM对象操作时,往往都要涉及到其属性的操作,为了提高开发效率,同时兼顾浏览器的性能,在这简单的封装了几个常见的属性。因为是模块化,在这只是引入了部分代码,其他代码在前几篇模块封装中有写。如有不足,万望提出,谢谢!
1、判断是否有属性,以及设置属性的操作
YY.fn.extend({
attr: function (attName,attValue){
//判断传入参数是否有属性值,没有直接返回属性名
if(arguments.length == 1){
return this[0].attName;
}else{
// 如果传入有属性值,给属性添加属性值
return this.each(function(){
this.attName = attValue;
});
}}
})
2、预先设定值val方法
YY.fn.extend({
val: function (value){
//判断value是否有值,没有则返回,有值则设置值
if(value === undefined){
return this[0].value;
}else{
return this[0].each(function(){
this.value = value;
})
}
}
});
3、返回或设置被选元素的内容html方法
YY.fn.extend({
html: function ( html ) {
if ( html === undefined ) {
// 返回 0 元素的 innerHTML
return this[ 0 ].innerHTML;
} else {
// 设置所有的 innerHTML
return this.each(function () {
this.innerHTML = html;
});
}
}
});
4、设置或返回被选元素的文本内容text方法
YY.fn.extend({
text: function (text){
if(text === undefined){
return this[0].innerText;
}else{
return this.each(function(){
this.innerText = text;//早期的火狐浏览器不支持innerText
})
}
}
})
兼容低版本火狐浏览器的写法
YY.extend({
//获取innerHTML值
getInnerText: function ( dom ) {
var list = [];
if ( dom.innerText !== undefined ) {
return dom.innerText;
} else {
getTextNode( dom, list );
//将数组换化为字符串
return list.join( '' );
}
function getTextNode ( dom, arr ) {
// 将 dom 里面的所有的文本节点放到 arr 中
var i, l = dom.childNodes.length,
node;
for ( i = 0; i < l; i++ ) {
node = dom.childNodes[ i ];
if ( node.nodeType === 3 ) {
//node.nodeValue节点的文本值
arr.push( node.nodeValue );
} else {
getTextNode( node, arr );//递归处理方式
}
}
}
},
//设置innerHTML值
setInnerText: function (dom,str){
//判断浏览器是否支持innerText
if('innerText' in dom){
dom.innerText = str;
}else{
dom.innerHTML = '';
//不支持在内部直接创建一个文本节点
dom.appendChild(document.createTextNode(str));
}
}
});
那么对应的test方法应改为
YY.fn.extend({
text: function ( text ) {
if ( text === undefined ) {
// 返回 0 元素的 innerHTML
return YY.getInnerText( this[ 0 ] );
} else {
// 设置所有的 innerHTML
return this.each(function () {
YY.setInnerText( this, text );
});
}
}
});
关于js封装框架类库之属性操作的更多相关文章
- 关于js封装框架类库之样式操作
在js中,对样式的操作我们并不感到陌生,在很多框架中都是用极少的代码,实现更强大的功能,在这做出一些的总结.存在不足还望指出! 1.封装一个添加css的方法(这篇引用了前面的框架结构) 在 js 中 ...
- 关于js封装框架类库之DOM操作模块(二)
上一篇基本实现了框架结构,但是与真正能用上的项目框架比较还是存在很多不足,在这又做了些加强与优化 (function ( window, undefined ) { var arr = [], pus ...
- 关于js封装框架类库之DOM操作模块(一)
在前端开发的过程中,javascript极为重要的一个功能就是对DOM对象的操作,而对其封装就是为了更好地进行DOM操作,提高浏览器的支持效率 现在给出一个案例:页面创建三个div,然后给其添加样式 ...
- 关于js封装框架类库之事件模块
在触发DOM上的某个事件时,会产生一个事件对象event.这个对象中包含着所有与事件有关的信息.包括导致事件的元素,事件的类型以及其他与特定事件相关的信息. 例如: 鼠标操作点击事件时,事件对象中会获 ...
- 关于js封装框架类库之选择器引擎(二)
在上篇介绍了选择器的获取标签.id.类名的方法,现在我们在上篇基础上继续升级 1.问题描述:上篇get('选择器')已经实现,如果get方法里是一个选择器的父元素,父元素是DOM对象,那么如何获取元素 ...
- 关于js封装框架类库之选择器引擎(一)
选择器模块之传统做法 var tag = function (tag){ return document.getElementsByTagName(tag); } var id = function ...
- JS/jQuery--iframe框架内外元素的操作(转)
JS/jQuery--iframe框架内外元素的操作 原创 2017年12月07日 14:23:09 标签: js / iframe 28 两个问题: 如何在父页面操作iframe框架内的元素? 如何 ...
- [妙味JS基础]第一课:属性操作、图片切换、短信发送模拟
知识点总结 HTML的属性操作:读.写 元素.属性名 => “读” 元素.属性名=新的值 => “写” 例如: oBtn.value => “读” oBtn.value='按钮' = ...
- JS封装cookie操作函数实例(设置、读取、删除)
本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
随机推荐
- 新手笔记-linux一些命令
vim ~/.vimrc 写入 set nu 以后使用vim就自动显示行号. shift + v 行选择 x 删除 u 撤销 ctrl + r 反撤销 file test.c 查看文件类型 ...
- sql查询数据库表中重复记录方法
1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 代码如下: select * from people where peopleId in (select peopleId ...
- Office 2010 Toolkit and EZ-Activator
“Office 2010 Toolkit 2.0.1”是“迷你KMS”的更新换代版本.虽然是单一可执行程序,但一身承担两大职能:“KMS服务器”和“客户激活端”.“Office 2010 Toolki ...
- WPF:构建应用程序
原文 http://www.cnblogs.com/free722/archive/2011/11/13/2247455.html WPF相关的项目内容包含在App.Xaml和Window1.xaml ...
- C语言入门(14)——结构体
整数.字符.布尔值.浮点数这些数据类型都具有单一的值,这些可称为基本数据类型.但字符串是一个例外,它由很多字符组成,像这种由基本类型组成的数据类型称为复合数据类型,正如表达式和语句有组合规则一样,由基 ...
- Hibernate get 和load的区别
1 load是要用的时候才从数据库去查询,get 是马上查询. 2 对于不存在的记录,get会报空指针异常,load会报 org.hibernate.ObjectNotFoundException: ...
- 深入理解java虚拟机---读后笔记(垃圾回收)
运行时数据区,主要包括方法区.虚拟机栈.本地方法栈.堆.程序计数器,该部分内存都是线程隔离的. 然后和其交互的有执行引擎.本地库接口,此部分线程之间是可以共享的. 1. 引用计数算法 给对象添加一个引 ...
- C语言 大小端 字节对齐
参考:http://www.cnblogs.com/graphics/archive/2011/04/22/2010662.html 1. 大端序:数据的高位字节存放在地址的低端,低位字节存放在地址的 ...
- Android版xx助手之天天酷跑外挂具体分析
Android版xx助手之天天酷跑外挂具体分析 图/文 莫灰灰 背景 近些年来,移动互联网的大肆崛起,潜移默化中影响着人们的生活和工作习惯.当腾讯的微信平台接入手机游戏之后,移动端的游戏也開 ...
- Objective-C中的@dynamic
一.@dynamic与@synthesize的区别 @property有两个对应的词,一个是@synthesize,一个是@dynamic.如果@synthesize和@dynamic都没写,那么默认 ...