清除JavaScript中的函数

时间:2014-03-31 05:09:04

标签: javascript jquery html

这似乎是一个简单的问题。我已经尝试过谷歌的答案,但我似乎无法找到答案,这就是我在这里寻求帮助的原因。部分问题在于我无法正确地表达问题,因此我将在此处尝试解释。这就是......

我的JavaScript文件中有两个函数(让我们将它们命名为fn1()fn2())。我在我的HTML文件中使用onclick调用这些函数。例如:

<span class="test" onclick="fn1();">Button #1</span>
<span class="test" onclick="fn2();">Button #2</span>

当用户点击各自的按钮时,这些功能完美无缺。但是,如果用户单击Button#1,然后单击Button#2,则同时调用/加载这两个函数。

问题:如何在用户点击按钮#2时禁用(或清除)fn1(),这将加载fn2()

谢谢。

5 个答案:

答案 0 :(得分:2)

您可以使用jQuery方式noop method

在fn1()函数中你应该使用$ .noop()清空函数fn2()

或者就像你在onclick上调用它一样,你可以在该函数中删除该属性。 (我不建议使用它)

$('span.test').not($(this)).removeAttr('onclick');

但我非常建议您使用namespace解锁点击事件,而不是调用内联javascript:

on method

$( "span.test" ).on( "click.something", function( event ) {
//do your stuff here
});

稍后您可以取消绑定点击事件,如下所示:

off method

$("span.test").off("click.something");

答案 1 :(得分:0)

好方法:当您输入fn2(而不是禁用该功能)时,禁用fn1 按钮。这也具有让用户知道该按钮不可用的副作用。禁用的元素不会触发“点击”事件。

$('span.test').not($(this)).prop('disable', true);

不那么好的方法:当你在一个函数中时设置一个变量,并在退出时清除它。如果设置了变量,则从函数中提前返回。

彻头彻尾的丑陋方式:如果单击其他按钮,则从其他按钮取消绑定。这太乱了,你真的不想这样做。

I-really-can-less-less-less方式:用no-ops重新定义其他函数。

答案 2 :(得分:0)

我不知道我是否理解你的问题,而且我没有足够的代表发表评论 但如果您希望用户在第一个按钮完成执行之前无法按下第二个按钮,那么您可以执行以下操作

在fn2()的第一行添加以下行

document.getElementById("button1").disabled = true

但您应首先将ID button1添加到第一个按钮

当用户按下按钮

时,这将使按钮button1变灰

代码完成执行后,您应该添加:

document.getElementById("button1").disabled = false

这将使按钮再次按下

答案 3 :(得分:0)

你可以尝试使用标志,这不会清除函数,例如:

var runFn1 = true;

function fn1() {
  if (!runFn1) {
    return;
  }
  // ur code here
}

function fn2() {
  runFn1 = false;
  // ur code here
}

答案 4 :(得分:0)

&#34;当用户点击各自的按钮时,这些功能完美无缺。但是,如果用户单击按钮#1,然后单击按钮#2 - 同时调用/加载这两个函数。&#34;

javascript是单线程的。 fn1()执行首先完成,然后是fn2()。希望你明白不会同时调用两者。

例如

function fn1(){
    while(true){
    }
}

function fn2(){
    alert("2");
}
<input type="button" value="Btn1" onClick="fn1();"/>
<input type="button" value="Btn2" onClick="fn2();"/>

尝试调用fn1()。你会惊讶fn2()不能被调用!