JavaScript DOM学习笔记3——DOM属性操作

本文探讨了HTML DOM中Element节点属性操作的原理及测试代码实现,指出获取某些节点属性值时面临的问题,并提供了相应的解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Node接口本身有一个attributes属性,并且所有类型的节点都继承了该属性。但是,事实上只有Element类型的节点才能有属性。Element节点的attibutes属性类型为NamedNodeList。NamedNodeMap可以通过数字和名字索引节点。

NamedNodeMap具有以下几个常用的方法:

1.getNamedItem(name):根据name获取属性节点。

2.setNamedItem(node):将节点添加进NamedNodeMap中,并且按照name索引。

3.removeNamedItem(name):删除name对应的节点

4.item(pos):类似于NodeList中的item()方法,通过节点的索引位置查找节点。

上述方法返回的都是一个Attr类型的节点,也就是Node.ATTRIBUTE_NODE。NamedNodeMap具有一个length属性表示其中包含几个元素。

但是考虑到上述方法过于累赘,DOM还定义了三个方法来操作属性:

getAttribute(name):通过name获取属性值

setAttribute(name,newValue):设置属性值

removeAttribute(name):删除属性

根据上面说的,我写了点测试代码:

  1. <html>
  2. <head>
  3. <title></title>
  4. <scripttype="text/javascript">
  5. functiontest(){
  6. varoHtml=document.documentElement;
  7. varoBody=oHtml.lastChild;
  8. varoP=oBody.lastChild;
  9. varoId=oP.getAttribute("id");
  10. alert(oId);
  11. }
  12. </script>
  13. </head>
  14. <bodyonload="test()">
  15. <pstyle="color:red"id="pId"></p>
  16. </body>
  17. </html>

事实上,不管IE8、Chrome还是Firefox都没办法取到<p>的id属性值。这一点很是困惑。。。

参考书目:

《JavaScript高级编程》Nicolas C. Zakas著, 曹力 张欣 等译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值