首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我需要4个previousSibling才能得到之前的两个元素?

为什么我需要4个previousSibling才能得到之前的两个元素?
EN

Stack Overflow用户
提问于 2018-05-15 09:52:43
回答 3查看 1.6K关注 0票数 3

在本例中,我希望获得前两个兄弟姐妹的值。

但这不是work btn.previousSibling.previousSibling.value

我需要使用4 previousSibling来得到值,为什么是4?

代码语言:javascript
复制
<!DOCTYPE HTML>
<html>
<head>
<script>
function text(btn){
    console.log(btn.previousSibling.previousSibling.previousSibling.previousSibling.value)
}
</script>
</head>
<body>
    <textarea></textarea>
    <br>
    <button onclick="text(this)">text</button>
</body>
</html>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-15 10:00:58

previousSibling指向前面的Node,它是示例中的新行( TextNode)。您可能需要使用previousElementSibling来代替

代码语言:javascript
复制
function text(btn){
  console.log(
    btn
      .previousElementSibling
      .previousElementSibling
      .value
  );
}
代码语言:javascript
复制
<textarea>Hello</textarea>
<br>
<button onclick="text(this)">text</button>

票数 3
EN

Stack Overflow用户

发布于 2018-05-15 10:00:16

这可能是因为浏览器插入的空条目:

https://developer.mozilla.org/en-US/docs/Web/API/Node/previousSibling

此代码适用于您的情况:

代码语言:javascript
复制
<!DOCTYPE HTML>
<html>
<head>
<script>
function text(btn){
    alert(btn.previousSibling.previousSibling.value);
}
</script>
</head>
<body>
    <textarea>test text</textarea><br><button onclick="text(this)">text</button>
</body>
</html>

您可以使用JQuery $(btn).prev().prev();

比如:

代码语言:javascript
复制
<!DOCTYPE HTML>
<html>
<head>
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> 
</script>
<script>
function text(btn){
    alert($(btn).prev().prev().val());
}
</script>
</head>
<body>
    <textarea>test text</textarea>
<br>
<button onclick="text(this)">text</button>
</body>
</html>
票数 0
EN

Stack Overflow用户

发布于 2018-05-15 10:05:30

原因是因为br元素。您可以使用parentNodequeryselector获取父元素来获取特定元素。

代码语言:javascript
复制
function text(btn) {
  var getText = btn.parentNode.querySelector('textarea').value;
  console.log(getText.trim())
}
代码语言:javascript
复制
<textarea></textarea>
<br>
<button onclick="text(this)">text</button>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50347200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档