Value from addEventListeners e.traget



是否可以从EventListener存储一个值作为id ?我需要一个ID从这个列表当我点击项目。

这是我尝试过的:

    <ul class="list">
      <li class="item-list" id="1"></li>
      <li class="item-list" id="2"></li>
      <li class="item-list" id="3"></li>
    </ul>
    
    <script type="text/javascript">
        list.addEventListener("click", function (e) {
            let podlistIndex;
            if (e.target.classList.contains("item-list")) {
                podlistIndex= e.target.getAttribute("id");
            }
    
            console.log(podlistIndex);
        });
    </script>

当项目被单击时,我可以获得value作为id,但是当我单击其他地方时,值就丢失了。如何存储该值?

将变量置于事件处理程序之外

let podlistIndex;
list.addEventListener("click", (e) => {
   if (e.target.classList.contains("item-list")) {
      podlistIndex = e.target.getAttribute("id");
   }
   console.log(podlistIndex);
});

在函数外创建一个数组,并在每次单击时填充它。这样它就不会覆盖任何id。

<script>
const ids = [];
let list = document.querySelector('.list');
list.addEventListener("click", function (e) {
   let podlistIndex;
       if (e.target.classList.contains("item-list")) {
        podlistIndex= e.target.getAttribute("id");
        ids.push(podlistIndex);
      }
   console.log(ids);
   });
</script>

最新更新