当前位置:首页 > JavaScript

js实现attr

2026-03-14 03:34:27JavaScript

JavaScript 实现类似 jQuery 的 attr() 方法

在原生 JavaScript 中,可以通过操作 DOM 元素的属性来实现类似 jQuery 的 attr() 功能。以下是几种常见实现方式:

获取元素属性

使用 getAttribute() 方法获取元素属性值:

const element = document.getElementById('myElement');
const value = element.getAttribute('data-attr');

设置元素属性

使用 setAttribute() 方法设置元素属性:

js实现attr

element.setAttribute('data-attr', 'newValue');

移除元素属性

使用 removeAttribute() 方法移除属性:

element.removeAttribute('data-attr');

自定义 attr() 函数

可以封装一个类似 jQuery 的 attr() 函数:

js实现attr

function attr(element, attributeName, value) {
    if (value === undefined) {
        return element.getAttribute(attributeName);
    } else {
        element.setAttribute(attributeName, value);
        return element;
    }
}

// 使用示例
const el = document.querySelector('#test');
attr(el, 'data-id', '123'); // 设置属性
const id = attr(el, 'data-id'); // 获取属性

处理布尔属性

对于 checked、disabled 等布尔属性,可以直接操作 DOM 属性:

// 设置布尔属性
element.checked = true;

// 获取布尔属性
const isChecked = element.checked;

注意事项

  1. HTML 属性和 DOM 属性有所不同,getAttribute() 获取的是 HTML 属性,而直接访问属性如 element.id 获取的是 DOM 属性
  2. 自定义数据属性建议使用 dataset 属性:
    
    // 获取 data-* 属性
    const dataValue = element.dataset.attrName;

// 设置 data-* 属性 element.dataset.attrName = 'value';



3. 对于样式操作,建议使用 `classList` 和 `style` 属性而非 `getAttribute/setAttribute`

标签: jsattr
分享给朋友:

相关文章

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…