当前位置:  开发笔记 > 编程语言 > 正文

在JavaScript中测试DOM元素的类型

如何解决《在JavaScript中测试DOM元素的类型》经验,为你挑选了4个好方法。

有没有办法在JavaScript中测试元素的类型?

答案可能需要也可能不需要原型库,但是以下设置确实使用了库.

function(event) {
  var element = event.element();
  // if the element is an anchor
  ...
  // if the element is a td
  ...
}

FlySwat.. 121

您可以使用typeof(N)获取实际的对象类型,但您要做的是检查标记,而不是DOM元素的类型.

在这种情况下,请使用elem.tagNameelem.nodeName属性.

如果你想要真正有创意,你可以使用标记名字典和匿名闭包,如果是开关或if/else.



1> FlySwat..:

您可以使用typeof(N)获取实际的对象类型,但您要做的是检查标记,而不是DOM元素的类型.

在这种情况下,请使用elem.tagNameelem.nodeName属性.

如果你想要真正有创意,你可以使用标记名字典和匿名闭包,如果是开关或if/else.



2> bobwienholt..:
if (element.nodeName == "A")
{
}
else if (element.nodeName == "TD")
{
}


使用**UPPERCASE**的+1原因不是一个选项!;)
@Robusto不正确.如果文档是HTML并且DOM实现是正确的,它将始终为大写.根据:http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815在"tagName"部分下(对于元素nodeName == tagName)"HTML DOM返回标准大写形式的HTML元素的tagName,与源HTML文档中的大小写无关."

3> roenving..:

也许您还必须检查节点类型:

if(element.nodeType == 1){//element of type html-object/tag
  if(element.tagName=="a"){
    //this is an a-element
  }
  if(element.tagName=="div"){
    //this is a div-element
  }
}

编辑:更正了nodeType-value


注意tagName的情况.
是的,看起来tagName将返回大写标签名称.
@TJCrowder所以看起来最好的选择是`element.tagName.toLowerCase()==='a'`

4> Eric Wendeli..:

roenving是正确的但是您需要将测试更改为:

if(element.nodeType == 1) {
//code
}

因为nodeType为3实际上是文本节点,nodeType为1是HTML元素.请参阅http://www.w3schools.com/Dom/dom_nodetype.asp

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有