2016-05-14 24 views
0

Also versuche ich eine Funktion zu erstellen, die den 0-Slot eines Arrays zu einem Eingabewert ändert. Ich möchte jedoch, dass diese Funktion nur einmal ausgeführt werden kann. Wie mache ich das, jede Hilfe wird sehr geschätzt, danke.Eine Funktion nur einmal ausführen (Javascript)

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>"; 
    } 
} 

Antwort

1

die Sie interessieren, habe ich isFunctionCalled:Boolean Variable für handle es definiert.

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; 
} 
0

Es gibt viele Möglichkeiten, dies zu tun.

Ein einfacher Weg ist, einen Flag-Wert zu setzen.

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

SO, wenn der Wert des Flags 1 zuerst ist, wird es funktionieren. Dann, als der Flag-Wert auf 0 geändert wird, dann wird das nächste Mal aufgerufen wird, wird es nicht geltend gemacht werden, als Flag 0 ist

1

Mind the ausgeführt Variable:

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