我一团糟。当单击范围内的每个“ ...”时,我希望包含“报告”的myDropdown div显示在范围内。
然后,我想在单击相应的Report时返回“ elementid”类的ID,在这种情况下为1或2,但是我不确定在reportFunction中放入什么

<html>
<style>
.dropbtn {
background-color: white;
color: black;
padding: 2px;
font-size: 30px;
border: none;
cursor: pointer;
font-weight: bold;
}

.dropdown {
position: relative;
display: inline-block;
}

.dropdown-content {
display: none;
background-color: #f9f9f9;
min-width: 160px;
font-size:10px;
overflow: auto;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
border: 1px solid lightgrey;
z-index: 1;
float: left;
}

.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}

.dropdown a:hover {background-color: #f1f1f1;cursor:pointer;}

.show {display:block;}
</style>

<span class="dropdown">
<button onclick="myFunction()" class="dropbtn">...</button>
<div id="myDropdown" class="dropdown-content">
<a class="elementid" id="1">Report</a>
</div>
</span>
<p>
<span class="dropdown">
<button onclick="myFunction()" class="dropbtn">...</button>
<div id="myDropdown" class="dropdown-content">
<a class="elementid" id="2">Report</a>
</div>
</span>

<script>
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}

window.onclick = function(event) {
if (!event.target.matches('.dropbtn')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
var id = document.getElementsByID("id");
for (i = 0; i < dropdowns.length; i++) {
  var openDropdown = dropdowns[i];
  if (openDropdown.classList.contains('show')) {
    openDropdown.classList.remove('show');
  }
}
}
}

function reportFunction() {

}
</script>
</html>

最佳答案

这样的事情应该会为您提供所需的ID。它使用parent()上升到包含范围,然后在其中获得类elementId的元素。

function reportFunction() {
    var id = $(this).parent().find('.elementid');
    ... //whatever you need to do
}


您的代码还有其他问题。您有两个具有相同ID divmyDropdown元素。您当前使用getElementById编写的代码将始终获得第一个。您需要指定一个类,并且在其上没有id,并以与上述相同的方式获取正确的类,或者根据需要使用一个已删除并附加到正确跨度的div

关于javascript - 获取点击ID的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42940663/

10-12 06:57