如何使用 javascript 在单击某个元素时获取 HTML 集合中该元素的索引

The*_*gre 5 html javascript arrays dom dom-events

我的 HTML 文件中有五个按钮。

鉴于它们是五个,我希望能够打印 HTML 集合中已单击的特定按钮的索引。即点击时btn 4我应该看到3打印的内容。我尝试将一些我认为可以做到的 JavaScript 行放在一起,但徒劳无功。JS代码是:

if (document.readyState == 'loading') {
        document.addEventListener('DOMContentLoaded',execute);
    }else{
        execute()
    }
    function execute() {
        var btns = document.getElementsByClassName('item');
        for (var i = 0; i < btns.length; i++) {
            btns[i].addEventListener('click',btnClicked);
        }       
    }
    function btnClicked(event,btns) {
        var btn = event.currentTarget;
        var btnIndex = btns.indexOf(btn)
        console.log(btnIndex)
    }
Run Code Online (Sandbox Code Playgroud)
<body>
        <div class="btn-items">
            <button class="item">btn 1 </button>
            <button class="item">btn 2 </button>
            <button class="item">btn 3</button>
            <button class="item">btn 4</button>
            <button class="item">btn 5</button> 
        </div>
    </body>
Run Code Online (Sandbox Code Playgroud)

该怎么走呢?

小智 2

您可以使用此解决方案获得所需的输出

function execute() {
    var btns = document.querySelectorAll('.item');
    btns.forEach(btnClicked);
  
}
function btnClicked(btn,index) {
    btn.addEventListener('click',()=>{
       console.log(index)
    });
}
Run Code Online (Sandbox Code Playgroud)

这是实现这一目标的更清洁的方法。