JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)


Posted in Javascript onNovember 25, 2013

HTML元素,属性已经十分丰富了。但是,在某些场合下,也会显得捉襟见肘,这时候自定义属性就发挥了十分关键的作用。

Html元素的自定义属性,使用起来,十分方便,例如:

<input type=”button” value=”Click Me, Baby!” />

假设我们现在需要限制,这个按钮,只能点击2次,然后就失效了。

通常的实现方式,是可以利用全局变量的形式来记录点击次数,但我们这里用自定义属性来实现这个功能,展示一下自定义属性的优势;我们对上面的button做一下改造:

<input type=”button” value=”Click Me, Baby!” clickCount=”0” />

可以看到,我为这个button 增加了一个自定义属性 clickCount, 并将初始值设为 0;下面我们来写实现功能的js代码:

1. 给 button 增加click事件的处理

<input type=”button” value=”Click Me, Baby!” clickCount=”0”  onclick=”customAttributeDemo(this);" />

2. 我们来写 customAttributeDemo(obj) 这个函数

对于IE来讲,使用自定义属性非常简单,因为IE自动将自定义属性解析到了DOM中,和标准属性没有任何区别,IE下的版本:

function customAttributeDemo(obj)
{
    if (obj.clickCount === '0')
    {
        obj.clickCount = '1';
    }
    else
    {
        obj.disabled = true;
    }
}

上面的代码在 FireFox 下将失效,因为FireFox对自定义属性的使用,限制更高,只能使用 attributes[] 集合来访问,FireFox 下的代码:
function customAttributeDemo(obj)
{
    if (obj.attributes['clickCount'].nodeValue === '0')
    {
        obj.attributes['clickCount'].nodeValue = '1';
    }
    else
    {
       obj.disabled = true;
    }
}

上面的代码,也适用于IE,所以,这个代码,就是具有兼容性的代码了。

感谢网友的交流,他给出了 getAttribute 和 setAttribute 的方法:

function customAttributeDemo(obj)
{
    if (obj.getAttribute('clickCount') === '0')
        obj.setAttribute('clickCount', '1');
    else
        obj.disabled = true;
}
Javascript 相关文章推荐
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
May 27 Javascript
BootStrap与Select2使用小结
Feb 17 Javascript
JavaScript数据结构之数组的表示方法示例
Apr 12 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 Javascript
seajs下require书写约定实例分析
May 16 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
vue实现动态按钮功能
May 13 Javascript
简述ES6新增关键字let与var的区别
Aug 23 Javascript
三步搞定:Vue.js调用Android原生操作
Sep 07 Javascript
解决vue请求接口第一次成功,第二次失败问题
Sep 08 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
Nov 25 #Javascript
js动态添加删除,后台取数据(示例代码)
Nov 25 #Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
Nov 25 #Javascript
jQuery中获取checkbox选中项等操作及注意事项
Nov 24 #Javascript
javascript 弹出的窗口返回值给父窗口具体实现
Nov 23 #Javascript
javascript 实现字符串反转的三种方法
Nov 23 #Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
Nov 23 #Javascript
You might like
PHP操作XML作为数据库的类
2010/12/19 PHP
django中的ajax组件教程详解
2018/10/18 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
实现向右循环移位
2014/07/31 面试题
cf收人广告词大全
2014/03/14 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
2015年入党决心书
2015/02/05 职场文书
教师个人总结范文
2015/02/11 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
师范生教育见习总结
2015/06/23 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
Python torch.flatten()函数案例详解
2021/08/30 Python
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android
Python采集壁纸并实现炫轮播
2022/04/30 Python