面试题67:【JS】设置、获取、删除标签属性以及H5自定义属性和DOM操作节点的方法

1、设置标签属性

使用setAttribute()('属性名', '属性值')方法可以添加、修改、删除属性。

下面的demo是为input添加、修改、删除value属性:

HTML

<input type="text" class="input">
<input type="text" class="input">
<input type="text" class="input">
JS
// 添加value属性
document.querySelectorAll('.input')[0].setAttribute('value', "add value's attribute"); 
 
// 修改value属性
document.querySelectorAll('.input')[1].setAttribute('value', "change value's attribute"); 
 
// 删除value属性值
document.querySelectorAll('.input')[3].setAttribute('value', ""); 

注意:querySelectorAll 可以选择多个节点,以","分隔开,返回的是个数组;

2、获取标签属性

使用 getAttribute(‘属性名')方法获取标签的属性

下面的demo是获取input的name属性

HTML

<input type="text" name="zhangdan" class="input">
JS
const name = document.querySelectorAll('.input')[0].getAttribute('name');
console.log(name); // zhangdan

3、删除标签属性

使用removeAttribute('属性名')方法删除标签的属性

下面的demo是删除input的name属性

HTML

<input type="text" name="inputBox" class="input">
JS
const name = document.querySelectorAll('.input')[0].removeAttribute('name');
console.log(name); // undefined

4. 判断是否包含指定的属性

element.hasAttribute(“属性名”) 判断元素里面有没有对应的属性名

结果会返回布尔类型的值,true或false

const target  = document.getElementsByClassName('test')[0];
target.setAttribute('data-name', 'test');
console.log(target.hasAttribute('data-name')); // true
target.removeAttribute('data-name');
console.log(target.hasAttribute('data-name')); // false

5.Dom节点操作常用方法

1.访问/获取节点

document.getElementById(id);      //返回对拥有指定id的第一个对象进行访问

document.getElementsByName(name);  //返回带有指定名称的节点集合   注意拼写:Elements

document.getElementsByTagName(tagname); //返回带有指定标签名的对象集合   注意拼写:Elements

document.getElementsByClassName(classname);  //返回带有指定class名称的对象集合 注意拼写:Elements

2.创建节点/属性

document.createElement(eName);  //创建一个节点

document.createAttribute(attrName); //对某个节点创建属性

document.createTextNode(text);   //创建文本节点

3.添加节点

document.insertBefore(newNode,referenceNode);  //在某个节点前插入节点

parentNode.appendChild(newNode);        //给某个节点添加子节点

4.复制节点

cloneNode(true | false);  //复制某个节点  参数:是否复制原节点的所有属性

5.删除节点

parentNode.removeChild(node);  //删除某个节点的子节点 node是要删除的节点

注意:为了保证兼容性,要判断元素节点的节点类型(nodeType),若nodeType==1,再执行删除操作。通过这个方法,就可以在 IE和 Mozilla 完成正确的操作。

nodeType 属性可返回节点的类型.最重要的节点类型是:

 6.修改文本节点

7.属性操作

getAttribute(name)    //通过属性名称获取某个节点属性的值

setAttribute(name,value);  //修改某个节点属性的值

removeAttribute(name);  //删除某个属性

8.查找节点

parentObj.firstChild;  //如果节点为已知节点的第一个子节点就可以使用这个方法。此方法可以递归进行使用 parentObj.firstChild.firstChild.....

parentObj.lastChild;  //获得一个节点的最后一个节点,与firstChild一样也可以进行递归使用 parentObj.lastChild.lastChild.....

parentObj.childNodes;   //获得节点的所有子节点,然后通过循环和索引找到目标节点

9.获取相邻的节点

curtNode.previousSibling;  //获取已知节点的相邻的上一个节点

curtNode.nextSlbling;    // 获取已知节点的下一个节点

10.获取父节点

childNode.parentNode;  //得到已知节点的父节点

11.替换节点

replace(newNode,oldNode);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值