首页 > 其他分享 >[JS DOM&BOM]自定义属性的操作

[JS DOM&BOM]自定义属性的操作

时间:2022-11-25 20:04:08浏览次数:38  
标签:index console log 自定义 DOM JS div 属性


[JS DOM&BOM]自定义属性的操作

操作

获取属性值

  1. element.属性
    获取内置元素的属性值(元素本身自带的属性)
  2. element.getAttribute(‘属性’);
    主要获得自定义的属性(标准)

设置属性值

  1. element.属性= ‘值’
    设置内置属性值
  2. element.setAttribute(‘属性’, ‘值’);
    主要针对于自定义属性,注意class不用className,而是直接诶class

移除属性值

element.removeAttribute(‘属性’);

代码例子

<body>
<div id="demo" index="1" class="nav"></div>
<script>
var div = document.querySelector('div');
// 1. 获取元素的属性值
// (1) element.属性
console.log(div.id);
//(2) element.getAttribute('属性') get得到获取 attribute 属性的意思 我们程序员自己添加的属性我们称为自定义属性 index
console.log(div.getAttribute('id'));
console.log(div.getAttribute('index'));
// 2. 设置元素属性值
// (1) element.属性= '值'
div.id = 'test';
div.className = 'navs';
// (2) element.setAttribute('属性', '值'); 主要针对于自定义属性
div.setAttribute('index', 2);
div.setAttribute('class', 'footer'); // class 特殊 这里面写的就是class 不是className
// 3 移除属性 removeAttribute(属性)
div.removeAttribute('index');
</script>
</body>

案例 tab栏切换(重点)

[JS DOM&BOM]自定义属性的操作_属性值


点哪一栏就哪里拦显示红色,下面内容换成相应内容。第一栏的颜色默认红色,内容默认为第一栏的内容

颜色用current控制,内容用display控制,然后结合排他思想就可以了

难点在于如何知道点了第几个小li然后显示相应的内容。
核心思路是:给上面的tab_list的所有小li设置自定义属性,属性值从0开始编号

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}

li {
list-style-type: none;
}

.tab {
width: 978px;
margin: 100px auto;
}

.tab_list {
height: 39px;
border: 1px solid #ccc;
background-color: #f1f1f1;
}

.tab_list li {
float: left;
height: 39px;
line-height: 39px;
padding: 0 20px;
text-align: center;
cursor: pointer;
}

.tab_list .current {
background-color: #c81623;
color: #fff;
}

.item_info {
padding: 20px 0 0 20px;
}

.item {
display: none;
}
</style>
</head>

<body>
<div class="tab">
<div class="tab_list">
<ul>
<li class="current">商品介绍</li>//第一个选中状态
<li>规格与包装</li>
<li>售后保障</li>
<li>商品评价(50000)</li>
<li>手机社区</li>
</ul>
</div>
<div class="tab_con">
<div class="item" style="display: block;">//第一个默认显示
商品介绍模块内容
</div>
<div class="item">
规格与包装模块内容
</div>
<div class="item">
售后保障模块内容
</div>
<div class="item">
商品评价(50000)模块内容
</div>
<div class="item">
手机社区模块内容
</div>

</div>
</div>
<script>
// 获取元素
var tab_list = document.querySelector('.tab_list');
var lis = tab_list.querySelectorAll('li');
var items = document.querySelectorAll('.item');
// for循环绑定点击事件
for (var i = 0; i < lis.length; i++) {
// 开始给5个小li 设置索引号
lis[i].setAttribute('index', i);
lis[i].onclick = function() {
// 1. 上的模块选项卡,点击某一个,当前这一个底色会是红色,其余不变(排他思想) 修改类名的方式

// 干掉所有人 其余的li清除 class 这个类
for (var i = 0; i < lis.length; i++) {
lis[i].className = '';
}
// 留下我自己
this.className = 'current';
// 2. 下面的显示内容模块
var index = this.getAttribute('index');
console.log(index);
// 干掉所有人 让其余的item 这些div 隐藏
for (var i = 0; i < items.length; i++) {
items[i].style.display = 'none';
}
// 留下我自己 让对应的item 显示出来
items[index].style.display = 'block';
}
}
</script>
</body>

</html>

H5自定义属性

自定义属性目的:是为了保存并使用数据
但是有些自定义属性容易引起歧义,不容易判断是内置属性还是自定义属性

设置H5自定义属性

H5规定自定义属性data-开头作为属性名并且赋值

<div data-index="1"></div>
或者用js
div.setAttribute('data-time',20);

获取H5自动义属性

兼容性获取

element.getAttribute('data-index');

H5新增
dataset 是一个集合里面存放了所有以data开头的自定义属性
如果自定义属性里面有多个-链接的单词,我们获取的时候采取 驼峰命名法

element.dataset.index
或者
element.dataset['index']

代码例子

<body>
<div getTime="20" data-index="2" data-list-name="andy"></div>
<script>
var div = document.querySelector('div');
// console.log(div.getTime);
console.log(div.getAttribute('getTime'));
div.setAttribute('data-time', 20);
console.log(div.getAttribute('data-index'));
console.log(div.getAttribute('data-list-name'));
// h5新增的获取自定义属性的方法 它只能获取data-开头的
// dataset 是一个集合里面存放了所有以data开头的自定义属性
console.log(div.dataset);
console.log(div.dataset.index);
console.log(div.dataset['index']);
// 如果自定义属性里面有多个-链接的单词,我们获取的时候采取 驼峰命名法
console.log(div.dataset.listName);
console.log(div.dataset['listName']);
</script>
</body>


标签:index,console,log,自定义,DOM,JS,div,属性
From: https://blog.51cto.com/u_15891800/5887703

相关文章

  • 【大一C语言项目】Cjson的认识与实现(二)
    【大一C语言项目】Cjson的认识与实现(二)参考资料:​​​哔哩哔哩CJson开源库使用及注意事项​​​​CJson开源项目下载地址​​​​cJSON源码刨析​​一、使用Cjson库下载CJSO......
  • js 字节数组模拟 agv auo
    res=JSON.stringify({x:10.0,y:3.0,angle:0});console.log(res);byteArr=[]for(letcofres){byteArr.push(c.charCodeAt().toString(16))}console......
  • JS BOM 基础
    目录页面加载事件调整窗口大小定时器locationhistory页面加载事件load页面所有元素加载完毕才执行window.addEventListener('load',function(){ varbtn=docu......
  • JS DOM 基础
    目录创建增删改查属性操作事件操作鼠标事件主要有创建、增、删、改、查、属性操作、事件操作创建document.write()页面文档流加载完毕,再调用这行会导致页面重绘(......
  • 自定义的Qt开关按钮
    这个控件比较简单,模仿现代应用程序常见的开关按钮绘制。通过这个案例你可以了解Qt动画的使用。在VS2015和Qt5.9上简单测试通过。下面是效果图:下面给出代码,头文件:class......
  • [JS DOM&BOM]Web API
    [JSDOM&BOM]WebAPIWebAPIWebAPI是浏览器提供的一套操作浏览器功能和页面元素的API(DOM和BOM)认识DOM什么是DOM文档对象模型(DOM)是HTML和XML文档的编程接口。它提供了对......
  • JPA自定义函数关键字
     SpringBoot从入门到精通(二十七)JPA实现自定义查询,完全不需要写SQL!-阿里云开发者社区(aliyun.com)关 键 字示例方法JPQL语句AndfindByLastnameAnd......
  • JS请求参数加密破解
    源代码如下functionajax(){var_0x41e66d=_0xe062,_0x31cef8={'type':arguments[0x0][_0x41e66d(0x91)]||_0x41e66d(0x92),'url':arguments......
  • JS类,创建,继承类,静态方法
    <!--js类 使用class创建类: 语法:constructor语法,ClassName类名 classClassName{ constructor(){...} } --> <pid="demo"></p> <script> letRunoob......
  • VUE读取本地json文件并解析
    //读取本地json文件exportfunctionGetUserAction(query){letquesa=axios.get('/json/userAction.json').then(res=>{//获取public下的buildmenu.json......