Javascript removeEventListener和带参数的匿名函数
我有一个文本输入,我在其中添加了一个事件侦听器。 此事件侦听器通过onkeyup执行匿名函数。 此匿名函数包含一个foo函数。 此foo函数有一个参数Javascript removeEventListener和带参数的匿名函数,javascript,javascript-events,Javascript,Javascript Events,我有一个文本输入,我在其中添加了一个事件侦听器。 此事件侦听器通过onkeyup执行匿名函数。 此匿名函数包含一个foo函数。 此foo函数有一个参数number,用于在控制台中显示数字 我添加了一个删除事件侦听器的按钮。 但当我单击此按钮并键入文本输入时,事件侦听器并没有被删除,因此foo函数在控制台中再次显示number 下面是代码,非常简单: <input type="text" value="" id="input_text"> <input type="button
number
,用于在控制台中显示数字
我添加了一个删除事件侦听器的按钮。
但当我单击此按钮并键入文本输入时,事件侦听器并没有被删除,因此foo函数在控制台中再次显示number
下面是代码,非常简单:
<input type="text" value="" id="input_text">
<input type="button" value="Remove Event Listener" onclick="deleteEventListener();">
<script type="text/javascript">
number = 0;
//Function to display number in console :
function foo(arg_number)
{
number = arg_number+1;
console.log(number);
}
//The text input :
input_text = document.getElementById("input_text");
//Add event listener to the text input :
input_text.addEventListener("keyup", function(){foo(number);}, false);
//Function to remove event listener :
function deleteEventListener()
{
input_text.removeEventListener("keyup", function(){foo(number);}, false);
}
数字=0;
//在控制台中显示数字的功能:
函数foo(参数编号)
{
编号=arg_编号+1;
控制台日志(编号);
}
//文本输入:
input_text=document.getElementById(“input_text”);
//将事件侦听器添加到文本输入:
input_text.addEventListener(“keyup”,function(){foo(number);},false);
//用于删除事件侦听器的函数:
函数deleteEventListener()
{
input_text.removeEventListener(“keyup”,function(){foo(number);},false);
}
你可以试试:
你有主意吗?提前衷心感谢您。请将您的功能设置为外部功能 发件人: 注意:要删除事件处理程序,使用addEventListener()方法指定的函数必须是外部函数,如上面的示例(myFunction) 匿名函数,如
element.removeEventListener(“事件”,function(){myScript})代码>将不起作用
它可以通过参数来实现。被调用方
,在全局范围的javascript变量中存储参数的值。被调用方
,并将该值作为removeEventListener()的参数传递。
谢谢你的回复。如何将my anonymous设置为外部函数?将函数foonNumber(){foo(number);}
放在函数foo之后。非常感谢,这是一个聪明的解决方案!谢谢。但您当时没有指定如何向其传递参数。他说“有争论”非常感谢你的争论!
number = 0;
var myAnonymous = null;
//Function to display number in console :
function foo(arg_number) {
number = arg_number + 1;
console.log(number);
}
//The text input :
input_text = document.getElementById("input_text");
//Add event listener to the text input :
input_text.addEventListener("keyup", function () { myAnonymous = arguments.callee; foo(number); }, false);
//Function to remove event listener :
function deleteEventListener() {
if (myAnonymous != null)
input_text.removeEventListener("keyup", myAnonymous);
}