gpt4 book ai didi

javascript - .previousSibling 总是先返回父节点的 Text 节点吗?

转载 作者:数据小太阳 更新时间:2023-10-29 05:45:48 25 4
gpt4 key购买 nike

我一直在使用 native DOM 方法(我知道,对吗?)并且我有这样的结构:

<div>
<input>
<a>
</div>

我在 <a> 上使用 onClick标签,并希望从输入中检索值。在 Chrome/OS X 上,类似于

this.previousSibling.previousSibling.value

会很好用。我加倍了,因为第一个 .previousSibling返回 <div>的 Textnode,以及之前的另一个获取我想要的输入。

我的问题是:.previousSibling如果存在,总是返回父节点的文本节点?

谢谢!

编辑/解决方案

我的 hacky 解决方案是(跨浏览器)以确保我得到正确的元素,如下所示:

var el = this; 
while(el.nodeType == 3 || el.tagName && el.tagName !== 'INPUT') {
el = el.previousSibling
};
console.log(el.value);

位置特定,但跨浏览器工作,并且足够轻,可以扔进 onClick为了我的需要。感谢您帮助找出这里的问题(特别是 HTML 之间的换行符)

最佳答案

返回前一个兄弟节点,可能是文本节点,可能是元素节点,也可能是null

您可以使用 .previousElementSibling 检索以前的元素节点,这在旧版浏览器中不受支持,但您可以使用如下函数:

function previousElementSibling( elem ) {

do {

elem = elem.previousSibling;

} while ( elem && elem.nodeType !== 1 );

return elem;
}

previousElementSibling(this) 将产生输入元素。

关于javascript - .previousSibling 总是先返回父节点的 Text 节点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9008732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com