使一个函数只运行一次(Javascript)

时间:2016-05-14 02:20:12

标签: javascript function

所以我试图创建一个将数组的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>";
    }
}

4 个答案:

答案 0 :(得分:1)

试试这个,我已经定义了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;
}

答案 1 :(得分:1)

注意已执行的变量:

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

答案 2 :(得分:0)

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

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

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

所以,如果标志的值一开始是1就可以了。然后,当标志值更改为0时,则下次调用时,将不会调用它,因为标志为0。

答案 3 :(得分:0)

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

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

有帮助吗?