注册click事件后,如何使用querySelectorAll删除事件侦听器?

时间:2020-10-21 09:04:54

标签: javascript addeventlistener removeeventlistener

我正在尝试构建一个游戏,用户将选择显示给他的6个div之一。在这里,我要执行两个操作,首先是获取被单击的div的索引,以便可以对选定的div进行一些操作。其次,我想删除所有最初的6个div上的事件监听器。

我是JS的新手,我被困住了。此外,如果您能给我更好的方法,我将不胜感激。

这是代码段

function listenForSelection(target){
    let attributeArr = document.querySelectorAll(`.power-container-p${target}`);
    for(let i = 0; i < attributeArr.length; i++){
        attributeArr[i].addEventListener('click', judge.bind(null , i, target, attributeArr));
    }

    for(let i = 0; i < attributeArr.length; i++){
        attributeArr[i].removeEventListener('click', judge);
    }

}

这是判断函数,它希望单击div的索引来执行其操作。

var judge = function(i, target, attributeArr){
    let opposite = (target == 1) ? 2 : 1;
    let attribute = "";
    switch (i){
        case 0:
            attribute = "Age";
            break;
        case 1: 
            attribute = "Power";
            break;
        case 2:
            attribute = "Strength";
            break;
        case 3:
            attribute = "Defence";
            break;
        case 4:
            attribute = "Morality";
            break;
        case 5: 
            attribute = "Average";
            break;
    }

    console.log(attribute);
    console.log(target); 
    
}

0 个答案:

没有答案