虽然HTML元素的属性已经十分丰富,但在某些场合下,元素固有的属性无法完成我们的需求;

这个时候,自定义属性就会让问题解决起来比较方便。

比如,下面的栗子:

多张图片点击变化事件:当背景图片为a.jpg时,点击图片时,切换成b.jpg;

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义属性</title>
<style type="text/css"> li{
list-style: none;
float: left;
width: 120px;
height: 120px;
background: url(a.jpg) no-repeat;
background-size: contain;
}
</style>
</head>
<body> <ul>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>

因为以下条件不能作为判断条件:

  1. 背景图片无法作为判断条件:所以,通过if(this.style.background==='url(a.jpg)'){this.style.background='url(b.jpg)'}这种方法无法实现;
  2. 颜色值的表达方式多样,如(red,#333,#f7f7f7),同样无法作为判断条件;(知识补充)
  3. 相对路径无法作为判断条件,如(img/a.jpg)。(知识补充)

此时,一般的判断条件不靠谱,所以,用自定义属性的方法显得格外简洁,高效。

思路:

aLi[i].onOff=true;

给每一组li元素添加一个开关属性onOff,并设置默认值为:true;

所以,aLi[i].onOff=true;时候,背景图片默认为a.jpg;

然后,通过更改onOff的值,当 onOff=false时候,背景图片设置为:b.jpg.

DEMO演示地址:http://codepen.io/anon/pen/Wvwmga

JAVASCRIPT:

var aLi=document.getElementsByTagName('li');

for(var i=0;i<aLi.length;i++){

	aLi[i].onOff=true;
//自定义属性,为每一个li元素添加一个onOff开关,默认值为true; aLi[i].onclick=function(){ if (this.onOff) {
this.style.cssText='background:url(b.jpg) no-repeat;background-size:contain;';
this.onOff=false;
}else{ this.style.cssText='background:url(a.jpg) no-repeat;background-size:contain;';
this.onOff=true;
} } }

  

javascript:DOM自定义属性的妙用的更多相关文章

  1. javaScript DOM JQuery AJAX

    http://www.cnblogs.com/wupeiqi/articles/5369773.html 一 JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript ...

  2. JavaScript DOM 对象

    JavaScript DOM 对象   什么叫DOM,DOM是文档对象模型(Document Object Model,是基于浏览器编程(在本教程中,可以说就是DHTML编程)的一套API接口,W3C ...

  3. JavaScript DOM 基础操作

    JavaScript DOM 基础操作 一.获取元素的六方式 document.getElementById('id名称') //根据id名称获取 document.getElementsByclas ...

  4. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  5. javascript DOM 操作 attribute 和 property 的区别

    javascript DOM 操作 attribute 和 property 的区别 在做 URLRedirector 扩展时,注意到在使用 jquery 操作 checkbox 是否勾选时,用 at ...

  6. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析

    先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...

  7. javascript DOM 操作

    在javascript中,经常会需要操作DOM操作,在此记录一下学习到DOM操作的知识. 一.JavaScript DOM 操作 1.1.DOM概念 DOM :Document Object Mode ...

  8. javascript DOM操作之 querySelector,querySelectorAll

    javascript DOM操作之 querySelector,querySelectorAll

  9. JavaScript : DOM文档解析详解

    JavaScript DOM  文档解析 1.节点(node):来源于网络理论,代表网络中的一个连接点.网络是由节点构成的集合 <p title=“a gentle reminder”> ...

随机推荐

  1. MC, MCMC, Gibbs採样 原理&amp;实现(in R)

    本文用讲一下指定分布的随机抽样方法:MC(Monte Carlo), MC(Markov Chain), MCMC(Markov Chain Monte Carlo)的基本原理,并用R语言实现了几个样 ...

  2. Python-elementTree方法解析xml文件-01

    [XML基本概念介绍] XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据.概念一: <foo> # foo元素的起始标签 ...

  3. CentOS6.7 用户

    1.添加普通用户[root@server ~]# useradd chenjiafa   //添加一个名为chenjiafa的用户[root@server ~]# passwd chenjiafa   ...

  4. OD: Exploit Me - Overwrite Nearby Varible

    实验代码: #include<stdio.h> #include<string.h> #define PASSWORD "1234567" int veri ...

  5. IE标签a嵌套table标签,链接点击无效

    在IE中,使用如下代码将无法触发跳转: <a href="http://xx.xx.com"> <table> <tr> <td>点 ...

  6. Sass简介,安装环境,Sass的语法格式及编译调试

    什么是 CSS 预处理器? 定义:CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进 ...

  7. C#高级知识点概要(2) - 线程并发锁

    本文目录: 线程的简单使用 并发和异步的区别 并发控制 - 锁 线程的信号机制 线程池中的线程 案例:支持并发的异步日志组件 线程的简单使用 常见的并发和异步大多是基于线程来实现的,所以本文先讲线程的 ...

  8. sealed 密封类,不能被其他类继承,但可以继承其他类

    public sealed class Person:继承类名 { }

  9. Spring4分别整合mongo2.X和3.0

    1.pom文件添加: <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-jav ...

  10. JS全部API笔记

    我相信对于程序猿都有做笔记的习惯. 我初学到现在也做了不少笔记,以前,总是怕写的文章或者好的内容分享出来就怕被直接copy以后更个名就不再是你的. 但通过博客园,学习到不少东西,人家都不怕什么了,我自 ...