获取 javascript 中上一个同级锚元素的 ID
Get the id of previous sibling anchor element in javascript
解决:获取前一个元素的id,使用previousElementSibling.id
代替previousSibling.id
。感谢Xufox和Skyline3000的快速提供解决方案。
完成一些锚点元素的面包屑后,我试图在单击一个面包屑时获取前一个同级元素的 ID(即父类别)。
例如。 Fruits> Apples> Green apples
不幸的是,我的代码不起作用。
alert(this.previousSibling)
returns [object Text]
alert(this.previousSibling,id)
returns id is undefined
.
alert(this.previousSibling,getAttribute(\'id\')
returns TypeError: this.previousSibling.getAttribute is not a function
.
alert(this.previousSibling,attr(\'id\'))
returns 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>
所有文本和空格,包括 HTML 标签之间的空格和换行符,都算作 TextNode。因此,标签的前一个兄弟实际上是 <a>
标签之间空白的 textNode。您真正想要做的是找到作为元素(HTML 标记)的前一个兄弟。
为此你应该简单地使用 this.previousElementSibling。
解决:获取前一个元素的id,使用previousElementSibling.id
代替previousSibling.id
。感谢Xufox和Skyline3000的快速提供解决方案。
完成一些锚点元素的面包屑后,我试图在单击一个面包屑时获取前一个同级元素的 ID(即父类别)。
例如。 Fruits> Apples> Green apples
不幸的是,我的代码不起作用。
alert(this.previousSibling)
returns[object Text]
alert(this.previousSibling,id)
returnsid is undefined
.alert(this.previousSibling,getAttribute(\'id\')
returnsTypeError: this.previousSibling.getAttribute is not a function
.alert(this.previousSibling,attr(\'id\'))
returnsTypeError: 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>
所有文本和空格,包括 HTML 标签之间的空格和换行符,都算作 TextNode。因此,标签的前一个兄弟实际上是 <a>
标签之间空白的 textNode。您真正想要做的是找到作为元素(HTML 标记)的前一个兄弟。
为此你应该简单地使用 this.previousElementSibling。