2016-05-14 137 views
0

所以我試圖創建一個函數,它將數組的0插槽更改爲輸入值。不過,我希望此功能只能運行一次。我如何做到這一點,非常感謝任何幫助。做一個函數只能運行一次(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>"; 
    } 
} 

回答

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

有很多方法可以做到這一點。

只是一個簡單的方法是設置一個標誌值。

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

因此,如果該標誌的值爲1,首先它將起作用。然後,當該標誌值變爲0,則下一個被調用時,它不會被調用,如標記爲0

1

心的執行變量:

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