博客
关于我
07_JavaScript自定义属性和节点操作
阅读量:282 次
发布时间:2019-03-01

本文共 2916 字,大约阅读时间需要 9 分钟。

排他操作

在 JavaScript 中,排他操作是一种常用的技术思想,用于确保在多个元素之间只有一个元素能够同时拥有某个特定的样式或属性。这种方法特别适用于按钮、图片和其他互斥元素的样式切换场景。

排他思想

排他思想的核心在于通过以下两个步骤实现:

  • 清除所有元素的样式:确保所有其他元素失去所需的样式或属性。
  • 设置当前元素的样式:赋予当前元素特定的样式或属性,使其与其他元素区分开来。
  • 这种方法非常适合像按钮这样的互斥控件,因为它能确保每次点击只有一项样式生效。

    案例:百度换肤

    在百度图片轮播中,每个图片都有独立的点击事件,点击一张图片后,页面背景会立即更换为该图片。以下是实现代码:

    // 获取元素var imgs = document.querySelector('.baidu').querySelectorAll('img');// 循环注册事件for (var i = 0; i < imgs.length; i++) {    imgs[i].onclick = function() {        // 通过设置body的背景图片实现页面更换        document.body.style.backgroundImage = 'url(' + this.src + ')';    }}

    自定义属性操作

    自定义属性是一种轻松的方法,可用于存储和检索与元素相关的数据。自定义属性可以通过 getAttributesetAttribute 方法来访问和修改。

    获取属性值

    使用 getAttribute 方法可以轻松获取元素的自定义属性值:

    // 获取元素var div = document.querySelector('div');console.log(div.getAttribute('id')); // 输出'demo'console.log(div.getAttribute('index')); // 输出'1'

    设置属性值

    使用 setAttribute 方法可以设置或修改元素的自定义属性:

    div.setAttribute('index', 2);div.setAttribute('class', 'footer');

    移出属性

    使用 removeAttribute 方法可以移除元素的自定义属性:

    div.removeAttribute('index');

    案例:tab栏

    在tab栏中,每个tab按钮点击后,会激活相应的内容区域。以下是实现代码:

    // 获取元素var tab_list = document.querySelector('.tab_list');var lis = tab_list.querySelectorAll('li');var items = document.querySelectorAll('.item');// 绑定点击事件for (var i = 0; i < lis.length; i++) {    lis[i].setAttribute('index', i);    lis[i].onclick = function() {        // 清除所有li的类        for (var i = 0; i < lis.length; i++) {            lis[i].className = '';        }        // 设置当前li的类        this.className = 'current';        // 获取当前索引        var index = this.getAttribute('index');        // 隐藏所有内容        for (var i = 0; i < items.length; i++) {            items[i].style.display = 'none';        }        // 显示当前内容        items[index].style.display = 'block';    }}

    H5自定义属性

    H5浏览器支持数据属性(data-*),可以用于存储和检索与元素相关的数据。以下是示例:

    // 获取元素var div = document.querySelector('div');console.log(div.dataset.index); // 输出'2'console.log(div.dataset['listName']); // 输出'andy'

    节点操作

    在DOM中,节点是网页内容的基本单元,包括标签、属性、文本和注释等。JavaScript提供了丰富的API来操作节点。

    父节点和子节点

    通过 parentNodechildren 属性可以轻松获取父节点和子节点:

    var erweima = document.querySelector('.erweima');console.log(erweima.parentNode); // 输出'div'

    兄弟节点

    通过 nextSiblingpreviousSibling 方法可以获取兄弟节点:

    var div = document.querySelector('div');console.log(div.nextSibling); // 输出'div'console.log(div.previousSibling); // 输出null

    创建和添加节点

    可以通过 createElementappendChild 方法创建和添加新的节点:

    // 创建li元素var li = document.createElement('li');// 将li添加到ul中var ul = document.querySelector('ul');ul.appendChild(li);

    案例:简单版发布留言

    以下是实现一个简单留言系统的代码:

    // 获取元素var btn = document.querySelector('button');var text = document.querySelector('textarea');var ul = document.querySelector('ul');// 绑定事件btn.onclick = function() {    if (text.value === '') {        alert('您没有输入内容');        return false;    } else {        var li = document.createElement('li');        li.innerHTML = text.value;        ul.insertBefore(li, ul.children[0]);    }}

    通过以上方法,可以轻松实现页面元素的互斥操作和动态内容的加载。

    转载地址:http://nxux.baihongyu.com/

    你可能感兴趣的文章
    PostgreSQL学习总结(1)—— PostgreSQL 入门简介与安装
    查看>>
    PostgreSQL学习总结(2)—— PostgreSQL 语法
    查看>>
    PostgreSQL学习总结(3)—— PostgreSQL 数据类型
    查看>>
    Qt开发——圆面积计算器
    查看>>
    PostgreSQL学习总结(5)—— PostgreSQL table 创建与删除
    查看>>
    PostgreSQL学习总结(6)—— PostgreSQL 模式(SCHEMA)详解
    查看>>
    PostgreSQL学习总结(7)—— PostgreSQL 语句 INSERT INTO、SELECT、UPDATE、DELETE 等学习
    查看>>
    PostgreSQL学习总结(8)—— PostgreSQL 基于数据库和基于模式(schema)的多租户分析
    查看>>
    PostgreSQL学习总结(9)—— PostgreSQL 运算符与表达式
    查看>>
    PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
    查看>>
    PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
    查看>>
    PostgreSQL学习笔记:PostgreSQL vs MySQL
    查看>>
    PostgreSQL实现shape数据转geojson数据(地图工具篇.18)
    查看>>
    PostgreSQL导入shape数据(地图工具篇.10)
    查看>>
    PostGreSql工作笔记003---在Navicat中创建数据库时报错rolcatupdate不存在_具体原因看其他博文_这里使用pgAdmin4创建管理postgre
    查看>>
    PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
    查看>>
    Postgresql常用命令行操作_以及Navicat操作PostGis时的问题_自动截取长度_WKB structure does not match exp---PostgreSQL工作笔记005
    查看>>
    PostgreSQL忘记密码
    查看>>
    PostgreSQL数据库pg_dump命令行不输入密码的方法
    查看>>
    PostgreSQL新手入门
    查看>>