javascript - 使用 JavaScript 禁用功能

标签 javascript

我似乎找不到禁用 JavaScript 函数的代码。我想做的是有一个 javascript 函数,然后我想禁用它。这是代码:

 <script>
 var fooFunc = function fooFunction() {
      alert("HELLO");
 };

 $(document).ready(function() {
      fooFunc.disable();    
 });
 </script>

 <button onclick="fooFunc()">Button</button>

基本上,当单击按钮时,该功能不应该起作用,应该将其禁用。谢谢

最佳答案

“禁用”fooFunc 与将其设置为空函数相同(notnull——这会导致错误下次调用)。在这种情况下:

$(document).ready(function() {
  fooFunc = function() { };
});

但我不明白这与简单地从 HTML 元素中删除 onclick 处理程序有什么不同。

如果你想要禁用/重新启用该功能,你可以这样写:

fooFunc = function() {

  function _fooFunc() {
    if (!enabled) return;
    alert("HELLO");
  }

  var enabled = true;
  _fooFunc.enable  = function() { enabled = true; };
  _fooFunc.disable = function() { enabled = false; };

  return _fooFunc;

}();

如果您想扩展它以允许启用/禁用任何功能,您可以编写一个高阶函数,该函数将任何函数作为参数,并返回一个带有 enable禁用附加到它的方法:

function disablable(fn) {

  function inner() {
    if (!enabled) return;
    fn();
  }

  var enabled = true;

  inner.enable  = function() { enabled = true; };
  inner.disable = function() { enabled = false; };

  return inner;

}

现在您可以将 fooFunc 定义为

var fooFunc = disablable(function fooFunction() {
  alert("HELLO");
});

其余的代码将按照您的意愿工作。

关于javascript - 使用 JavaScript 禁用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33904909/

相关文章:

javascript - Canvas ID 裁剪为预定义大小

javascript - 如何使用 Jquery 在 HTML 表格中添加行?

javascript - 如何使用正则表达式或字符串函数在字符串中插入反斜杠以在 JavaScript 中提取子字符串?

javascript - 在 NativeScript 中访问元素高度

javascript - 无法在 sencha tabpanel 中的选项卡上执行操作

javascript - 如何增加 Firestore 中的数字?

javascript - 缩放 Raphael/SVG 容器以适应所有内容

javascript - 用于更改 css-sprite 的背景图像的内联代码

javascript - 如何使函数内部的变量成为全局变量?

javascript - 如何检测正则表达式是否有匹配项?