Javascript 单击打开最近的详细信息元素

Javascript 单击打开最近的详细信息元素,javascript,html,jquery,Javascript,Html,Jquery,我想有一个按钮,打开最近的细节元素(按钮上方),而不使用ID。 我尝试了以下代码的变体并搜索了每一个线程,但无法找到它 函数openDetail(detailsElement){ detailsElement.setAttribute(“打开”); } 摘要1 测试1 按钮 总结2 测试2 按钮您可以使用.prev()从按钮获取上一个元素 演示代码: 函数openDetail(detailsElement){ $(detailsElement.prev().attr('open','ope

我想有一个按钮,打开最近的细节元素(按钮上方),而不使用ID。 我尝试了以下代码的变体并搜索了每一个线程,但无法找到它

函数openDetail(detailsElement){
detailsElement.setAttribute(“打开”);
}

摘要1
测试1
按钮
总结2
测试2
按钮
您可以使用
.prev()
从按钮获取上一个元素

演示代码

函数openDetail(detailsElement){
$(detailsElement.prev().attr('open','open'))
}

摘要1
测试1
按钮
总结2
测试2
按钮
const details=document.queryselectoral(“详细信息”);
函数openDetail(detailPosition){
const pos=详细信息[detailPosition-1];
pos.open=!pos.open;
}
摘要1
测试1
按钮

您需要在此处使用
previousElementSibling
属性,然后在
打开时使用
setAttribute
。请检查以下代码:

函数openDetail(e){
const closer=e.previousElementSibling;
setAttribute(“打开”,true);
}

摘要1
测试1
按钮
总结2
测试2

按钮
您能检查一下吗

$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
var id=$(this.attr(“目标id”);
控制台日志(id)
var key=“#”+id;
变量项=$(''+键+'').attr(“打开”,真)
});
});

摘要1
测试1
按钮
总结2
测试2

按钮
谢谢您的回答。。有没有一种方法可以在一个div而不是一个按钮上工作?这也可以在那里工作,只需将按钮更改为div。如果您在创建JSFIDLE时遇到任何问题,请告诉我。哦,我看到我的问题是我的按钮在另一个div中,它不工作。请使用
$(detailsElement)。parent().prev().attr('open','open')
查看是否工作。
const details = document.querySelectorAll("details");

function openDetail(detailPosition) {
  const pos = details[detailPosition - 1];
  pos.open = !pos.open;
}
    
<details>
<summary>Summary 1</summary>
  Test 1
</details>
<button onclick="openDetail(1)">button</button>