虽然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. [RxJS] Observables can complete

    The Observer object has the functions next() and error(). In this lesson we will see the other (and ...

  2. 左右TextView旋转门问题

    最近由于旋转门问题的一个客户找我,当在字符25更多的时候是不是走了,后来,我在重现的问题,发现问题如下面: 问题1.人物25几个月之内可以去. 问题2.在人物25个月,虽然比屏幕宽度,不去 问题3.屏 ...

  3. 实战:推断mysql中当前用户的连接数-分组筛选

    #connets.sh #!/bin/sh #ocpyang@126.com #依据输入參数u或d来显示出相应的username或数据库名中用户的连接数. #也能够输入u 详细username或d 详 ...

  4. Java基础知识强化53:经典排序之选择排序(SelectionSort)

    1.选择排序的原理图: 2. 选择排序代码实现: package cn.itcast_02; /* * 数组排序之选择排序: * 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在 ...

  5. js库编写的环境和准备工作

    在编写一个js库之前需要准备许多基础知识. 本人在编写之前主要参考了visjs和百度的echarts这两个库的部分内容,这之中提取出几个要点如下: 1.如何整理代码结构,使模块与模块分开又不至于出现调 ...

  6. Hadoop shuffle与排序

    Mapreduce为了确保每个reducer的输入都按键排序.系统执行排序的过程-----将map的输出作为输入传给reducer 称为shuffle.学习shuffle是如何工作的有助于我们理解ma ...

  7. cordova-plugin-app-version插件使用

    此插件用来获取开发软件的版本号! 首先安装此插件: 命令行中输入 cordova plugin add cordova-plugin-app-version   然后刷新项目,就会在在项目plugin ...

  8. OpenSceneGraph FAQ

    转自http://www.cnblogs.com/indif/archive/2011/04/22/2024805.html 1.地球背面的一个点,计算它在屏幕上的坐标,能得到吗? 不是被挡住了吗? ...

  9. 自己写的简单的jQuery分页控件

    因为是内部项目,需要分页控件,网上找了一大堆,给领导一看,都说不行,原因很简单,太复杂,领导就想要个简单点的,类似百度的分页,可是自己也没写过Jquery控件,硬着头皮找了些资料,写了这个分页控件,目 ...

  10. angularjs——module

    1.创建module //第一个参数是模块的名称 var head=angular.module('headApp',[]); head.controller("User",[&q ...