在本例中,我希望获得前两个兄弟姐妹的值。
但这不是work btn.previousSibling.previousSibling.value
我需要使用4 previousSibling来得到值,为什么是4?
<!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>发布于 2018-05-15 10:00:58
previousSibling指向前面的Node,它是示例中的新行( TextNode)。您可能需要使用previousElementSibling来代替
function text(btn){
console.log(
btn
.previousElementSibling
.previousElementSibling
.value
);
}<textarea>Hello</textarea>
<br>
<button onclick="text(this)">text</button>
发布于 2018-05-15 10:00:16
这可能是因为浏览器插入的空条目:
https://developer.mozilla.org/en-US/docs/Web/API/Node/previousSibling
此代码适用于您的情况:
<!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();
比如:
<!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>发布于 2018-05-15 10:05:30
原因是因为br元素。您可以使用parentNode和queryselector获取父元素来获取特定元素。
function text(btn) {
var getText = btn.parentNode.querySelector('textarea').value;
console.log(getText.trim())
}<textarea></textarea>
<br>
<button onclick="text(this)">text</button>
https://stackoverflow.com/questions/50347200
复制相似问题