nodeName和tagName



这两个概念,相信各位前端同学肯定都是比较清楚的,在JavaScript的开发中常常会用到,之前我一般都是用tagName,后来发现nodeName也能有一样的效果,但是他们直接的区别一直都不清楚,知道昨天看见了篇文章,讲得很清楚,因此就在这里翻译过来,也算加上自己的印象吧。

原文地址:http://aleembawany.com/2009/02/11/tagname-vs-nodename/

作者:Aleem Bawany

在JavaScript中检查HTML元素的名字,常常都要用到tagName和nodeName。通常情况下,两者都能达到同样的作用。如果你只支持A-grade浏览器的话,nodeName是一个更好的选择,但如果是你同样需要支持IE 5.5的话,那tagName却是更好的选择。

这里说一下tagName的两个问题:

  1. 在所有的IE浏览器中,一个注释节点(comment node)的tagName,总是会返回“!”。
  2. 对于文字节点(text node),tagName总是返回undefined,然而nodeName却返回“#text”。

但是nodeName也有自己的问题,但是影响不大:

  1. IE 5.5中,注释节点(comment node)的nodeName总是返回“!”,但它要比tagName好一些,因为nodeName只有在IE 5.5中,注释节点才会返回“!”,而其他版本IE均正常。
  2. IE 5.5中的文档元素(document element)以及属性节点(attribute node)的nodeName都失效。通常情况下,这些都不会造成什么问题,但是自己心里一定要有谱。
  3. Konqueror浏览器中使用nodeName的时候会自动忽略掉注释节点(comment node)。但是同样的,Konqueror和IE 5.5都不是A-grade浏览器

所以对于普通的JavaScript开发,还是应该坚持使用nodeName,因为它支持更广阔的应用场景,同时也有更好的向前兼容性。想想也知道,大家并不会因为它对于注释节点(comment node)的兼容性问题就放弃使用nodeName,相反,根本不用担心IE 5.5和Konqueror,因为他们的市场占用率都快趋近于0了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值