Javascript 如何在window.matchMedia中添加removeEventListener?

Javascript 如何在window.matchMedia中添加removeEventListener?,javascript,addeventlistener,removeeventlistener,matchmedia,Javascript,Addeventlistener,Removeeventlistener,Matchmedia,我的问题是: 我想有一个“addEventListener”点击方法,只适用于小于“400px”的浏览器。但是当我们调整浏览器的大小时,我想删除这个方法 我的代码格式如下。如果我在400像素以上的浏览器中长大,我会继续使用这种方法。我需要你的帮助 function customFunction(x) { var cardClick = document.getElementsByClassName("card"); var inner = document.

我的问题是:

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

我的代码格式如下。如果我在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);
“使用参数调用removeEventListener(),但这些参数不能识别EventTarget上当前注册的任何EventListener,因此无效。”

每次调用customFunctions时都要定义新版本的card函数,这样就不能将其从元素中分离,因为它与附加的函数不同

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

你的听众呢?我想我不太明白,所以我只想评论一下。如果(screen.width<400){whater.addEventListener(“resize”,cb(){})}或者{whater.removeEventListener(“resize”,cb(){alert(“Listener removed”}),他会使用旧的resize……console.log(x,x.matches)更聪明的方法看看会发生什么。matchMedia可以工作。例如,如果我从浏览器大小1200px开始,然后调整大小到300px,“单击”在调整大小后可以工作。“console.log(x,x.matches)”匹配:true和false,可以工作…但是removeEventListener也不能工作,我们需要将cardClick和Internal移出功能,它可以工作。谢谢!!