1

这是我的问题:

我只想为小于“400px”的浏览器提供“addEventListener”点击方法。但是当我们调整浏览器的大小时,我想删除这个方法。

我的代码格式如下。如果我将浏览器长大超过 400 像素,我将继续使用该方法。我需要你的帮助。

function customFunction(x) {

    var cardClick = document.getElementsByClassName("card");
    var inner = document.getElementsByClassName("card-inner");

    if (x.matches) {

        cardClick[0].addEventListener("click", cardFunction);

        function cardFunction() {
            // some code
            // inner[0].style......
        }

    } else {

        cardClick[0].removeEventListener("click", cardFunction);

    }
}

var x = window.matchMedia("(max-width: 400px)");
customFunction(x);
x.addListener(customFunction);
4

1 回答 1

1

“使用未识别 EventTarget 上任何当前注册的 EventListener 的参数调用 removeEventListener() 无效。”

每次调用 customFunctions 时都会定义新版本的卡片函数,因此您不能将其与元素分离,因为与您附加的函数不同。

function cardFunction() {
   // some code
   // inner[0].style......
}

function customFunction(x) {

    var cardClick = document.getElementsByClassName("card");
    var inner = document.getElementsByClassName("card-inner");

    if (x.matches) {
        cardClick[0].addEventListener("click", cardFunction);

    } else {
        cardClick[0].removeEventListener("click", cardFunction);
    }
}

var x = window.matchMedia("(max-width: 400px)");
customFunction(x);
x.addListener(customFunction);
javascript
于 2020-12-18T17:21:55.353 回答