在javascript中获取前一个兄弟锚元素的id

时间:2018-04-06 16:13:00

标签: javascript attributes siblings

已解决:要获取上一个元素的ID,请使用previousElementSibling.id代替previousSibling.id。感谢Xufox和Skyline3000快速提供解决方案。

有一些锚点元素的面包屑,我试图在点击一个breakcrumb(即父类别)时获得前一个兄弟的id。 例如。 Fruits> Apples> Green apples

不幸的是,我的代码不起作用。

  • alert(this.previousSibling)返回[object Text]
  • alert(this.previousSibling,id)返回id is undefined
  • alert(this.previousSibling,getAttribute(\'id\')返回TypeError: this.previousSibling.getAttribute is not a function
  • alert(this.previousSibling,attr(\'id\'))返回TypeError: this.previousSibling.attr is not a function

我认为没有正确到达兄弟姐妹,因为我期待一些元素或对象而不是文本。

这是两个面包屑的HTML和javascript的样子:

<a id="n5_40_64_40" onclick="javascript:
    var tree=jQuery('#tree').dynatree('getTree');
    if (!tree.activateKey('40')) {
      var parent=0;
      if (1) {
       parent=this.previousSibling.id.split(/[_]+/).pop();
      }
    }
    return false;" href="">Apples</a>
>
<a id="n5_40_64_64" onclick="javascript:
    var tree=jQuery('#tree').dynatree('getTree');
    if (!tree.activateKey('64')) {
      var parent=0;
      if (2) {
       parent=this.previousSibling.id.split(/[_]+/).pop();
      }
    }
    return false;" href="">Green apples</a>

1 个答案:

答案 0 :(得分:3)

所有文字和空格,包括HTML标记之间的空格和新行,都算作TextNode。因此,标签的前一个兄弟实际上是<a>标签之间的空白的textNode。你真正想要做的是找到作为元素的前一个兄弟(HTML标签)。

为此,您应该只使用this.previousElementSibling