繁体   English   中英

使功能仅运行一次(JavaScript)

[英]Make a function only run once (Javascript)

因此,我试图创建一个将数组的0插槽更改为输入值的函数。 但是我希望此功能只能运行一次。 我该怎么做,非常感谢您的任何帮助。

function submitForm() {
    $('#inputForm').submit;
         if ($("#inputValue").val() != inputException) {
              charSetName();
              $("#inputValue").val("");
         }
         $("#inputValue").val("");
     }
function charSetName() {
    var nameSet = false;
    if (nameSet == false) {
        nameSet = true;
        charDetails[0] = $("#inputValue").val();
        document.getElementById("name").innerHTML = "<li id='name''>Name: " + charDetails[0] + "</li>";
    }
}

试试这个,我已经定义了isFunctionCalled:Boolean变量来处理它。

var isFunctionCalled = false;

function submitForm() {
  $('#inputForm').submit;
  if ($("#inputValue").val() != inputException) {

    if (!isFunctionCalled) {
      charSetName();
    }

    $("#inputValue").val("");
  }
  $("#inputValue").val("");
}

function charSetName() {
  var nameSet = false;
  if (nameSet == false) {
    nameSet = true;
    charDetails[0] = $("#inputValue").val();
    document.getElementById("name").innerHTML = "<li id='name''>Name: " + charDetails[0] + "</li>";
  }

  isFunctionCalled = true;
}

注意执行的变量:

var something = (function() {
    var executed = false;
    return function () {
        if (!executed) {
            executed = true;
            // do something
        }
    };
})();

有很多方法可以做到这一点。

一种简单的方法是设置标志值。

if(flag){
//your code here...
flag = !flag;
}

因此,如果标志的值最初为1,它将起作用。 然后,随着标志值更改为0,然后下次调用它时,由于标志为0,因此将不会调用它。

这是一个古老的问题,但由于需要类似的东西而被带到这里。 对于下次再来的人,这就是我最终要做的事情:
我只声明了一个初始计数为0的变量。然后,每次我的函数运行时,它都会自动增加。 我想运行一次的代码只检查计数是否为1,然后运行。 如果没有,它不会。 像这样:

let count = 0;
count === 1 ? doSomething : doNothing
count++

有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM