比较元素tagName时可以避免区分大小写问题吗?

时间:2014-05-25 13:10:21

标签: javascript dom

因为HTMLElement.tagName属性大小写因XHTML / HTML而异,所以我继续使用:

 if(element.tagName.toLowerCase()=="div")
 //Or, if I feel big
 if(element.tagName.toUpperCase()=="DIV")

通常,我真的不喜欢对字符串执行操作,尤其是在使用不可变字符串的语言中。

但是,我可以使用instanceof运算符完全避免使用字符串。 IE的旧版本不支持此解决方案,我不关心:

if(element instanceof HTMLDivElement)

所以我的问题是:

  1. 第一个解决方案可以更智能地执行吗?
  2. 如果我只关心当前版本的浏览器,我可以毫不畏惧地使用第二种解决方案吗? (它实际上更快吗?)

1 个答案:

答案 0 :(得分:0)

假设您没有使用XHTML,则没有理由进行案例检查。 HTML将始终以大写形式返回tagName

如果您正在编写必须同时使用XHTML和HTML的内容,那么您可以将字符串转换为大写或小写作为初始示例。没有理由避免像这样的字符串操作 - 并且没有理由避免使用不可变字符串的语言中的字符串操作。

使用instanceof也是一种可接受的方法,只要您了解IE的限制,例如您提到的。