如何在 javascript 中逐一定位附加项目?

How can i target appended items one by one in javascript?

我创建了一个类似于网络浏览器的简单新标签页,但是当我创建一个新标签页并按 x 图标触发 closetab() 时,它会关闭所有标签页并且不会按顺序逐一删除它们。如何使每个附加项都独一无二?

JS:

function addTab() {
    
        var img = document.createElement("img");
        img.src = "resources/img/delete-icon.svg";
    
        img.className = 'deleteicon';
        img.id = "deletetab";
        img.onclick = closeTab;
    
        var ulLocation = document.getElementsByClassName('abc')[0];
        var whereTab = document.getElementById('listid');
    
        var addTab = document.createElement('li');
        addTab.className = 'first-tab';
        addTab.id = "listid";
    
        addTab.className = 'active';
      
        addTab.innerHTML = "mozilla-firefox/newtab";
        addTab.appendChild(img2);
    
        ulLocation.appendChild(addTab);
    
        addTab.appendChild(img);
    }

function closeTab() {
    var whereTab = document.getElementById('listid');
    if (whereTab.style.display == 'block') {
        whereTab.style.display = 'none';
    } else {
        whereTab.style.display = "none";
    }
}

您至少有 2 个选项。一种是定位活动选项卡并在单击 X 时将其关闭。这是假设您一次只有一个活动选项卡(例如用 active class 表示)。

function closeTab(event) {
   document.querySelector('li.tab.active').remove();
}

另一种选择是引用与关闭图标相关的选项卡,您可以在点击侦听器的 event 参数中引用它。由于您是动态添加这些内容,因此您可以通过单击删除而不是隐藏来删除它们。类似于:

function closeTab(event) {
   event.target.closest('li.tab').remove();
}

在这些示例中,您已将选项卡容器的 class名称设置为 tab