前端基础(十)_Dom自定义属性(带案例)

简介: 本文介绍了DOM自定义属性的概念和使用方法,并通过案例展示了如何使用自定义属性来控制多个列表项点击变色的独立状态。

Dom自定义属性

1.1、为什么要用自定义属性

例:很多个 li 点击变颜色。

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
</ul>
<script>
    var li = document.getElementsByTagName("li");
    var tag = true;// 多个div时,不能同时改变
    for(var i=0;i<li.length;i++){
   
        li[i].onclick=function(){
   
            if(tag){
   
                this.style.background="red";
                tag=false;
            }else{
   
                this.style.background="blue";
                tag=true;
            }
        }
    }
</script>

上面的例子只能实现点击变成红色、蓝色,但是不能控制单个li改变红色、蓝色
在这里插入图片描述
tag控制着整体li点击的下一次颜色,不满足要求,我们要实现,点击每一个,都能来回切换红、蓝,不影响其他的li他们都是独立的。

1.2、自定义属性

针对上面的问题,在有很多个元素情况下使用一个标识肯定是不行的,这里我们要给每一个元素都添加一个属性,表示标识状态,我们叫自定义属性。
自定义属性是指给标签添加已有属性的以外的属性,例如div标签id、class这些属性都是已有的,如果再添加一个tag属性,这就是自定义的。

例1:

<div id="box" class="box" tag="123"></div>
<script>
    var oDiv = document.getElementById('box');
    console.log(oDiv.tag);// undefined  在标签上设置的自定义的属性,点的形式,获取不到,要用到后面讲的attribute方法获取

    oDiv.abc = true;
    console.log(oDiv.abc); // true 能过js添加的属性,可以获取到
</script>

直接在标签上写上自己定义的属性,我们通过js是拿不到的,我们需要使用后续学习的attribute方法获取。
在这里插入图片描述

但是怎么解决这个问题呢?

例2 :自定义属性,实现点击改变颜色的操作

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
</ul>
<script>
    var li=document.getElementsByTagName("li");
    for(var i=0;i<li.length;i++){
   
        li[i].tag=true;
        li[i].onclick=function(){
   
            // console.log(this);
            if(this.tag){
   
                this.style.background="red";
                this.tag=false;
            }else{
   
                this.style.background="blue";
                this.tag=true;
            }
        }
    }
</script>

在这里插入图片描述
这样我们实现啦。
在循环里面,给每一个li元素增加tag属性,赋值为true,

li[i].tag=true;

随后给每一个li增加点击事件,判断tag的值,从而改变dom的某个属性,tag值改变,再次点击,再次判断tag的值,就可以实现了单个li来回切换。

li[i].onclick=function(){
   
    // console.log(this);
      if(this.tag){
   
          this.style.background="red";
          this.tag=false;
      }else{
   
          this.style.background="blue";
          this.tag=true;
      }
}

同时在点击事件里面,我们可以使用this来识别当前的元素。

this指向特点:
①方法函数:对象.方法() ; this->调用方法的对象
②普通函数:( window.) 函数名() this->window
③事件处理函数: oDiv.οnclick= function(){} oDiv.onclick() this->添加事件的元素
④全局中的this指向window对象

目录
相关文章
|
1天前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
7 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
1天前
|
前端开发 JavaScript
前端基础(七)_DOM元素获取(getElementById、getElementsByTagName、getElementsByClassName、querySelector等)
本文介绍了如何在前端通过不同的方法获取DOM元素,包括getElementById、getElementsByTagName、getElementsByClassName、querySelector和querySelectorAll。
8 3
|
1天前
|
前端开发 定位技术 API
二、前端高德地图、渲染标记(Marker)引入自定义icon,手动设置zoom
文章介绍了如何在前端使用高德地图API渲染标记(Marker),并引入自定义图标,同时展示了如何手动设置地图的缩放级别。
9 1
|
1天前
|
前端开发
前端基础(十二)_overflow属性、clear属性、vertical-align属性
本文详细介绍了CSS中的overflow属性、clear属性和vertical-align属性的用法和效果,并通过实例展示了如何控制元素内容溢出时的显示方式、清除浮动以及对齐行内元素和行内块元素。
5 1
|
1天前
|
移动开发 前端开发 JavaScript
使用html-to-image代替html2canvas,结合jspdf实现下载pdf(下载截图下载前端dom元素)
本文介绍了在前端项目中,当使用`html2canvas`遇到问题时,如何使用`html-to-image`库作为替代方案,结合`jspdf`实现将DOM元素生成为PDF文件并提供下载。文章首先讨论了`html2canvas`可能遇到的问题,并提供了该库的使用示例代码。随后,详细介绍了`html-to-image`库的安装和使用方法,展示了如何将DOM元素转换为Canvas,再利用`jspdf`生成PDF文件。最后,文章通过示例代码说明了整个转换和下载的过程,并展示了效果截图。
4 0
|
7天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
XML DOM 遍历节点树
|
3天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
XML DOM 遍历节点树
|
7天前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
3天前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
1天前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)