Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中停止函数多次执行?_Javascript_Jquery_Html - Fatal编程技术网

如何在JavaScript中停止函数多次执行?

如何在JavaScript中停止函数多次执行?,javascript,jquery,html,Javascript,Jquery,Html,我是javascript和jquery的新手。我的一个函数在调用另一个函数时正在执行自身。我尝试了所有我能找到的方法来阻止这一切。但是当应用它们时,这个函数会完全停止执行。我只需要执行一次 我试图从javascript数组填充一个列表。第一个功能就是这样。然后我需要向该数组添加更多项,并用新数组填充列表。第二个函数addProcessFunc()用于此。但是在执行第二个函数时,第一个函数中的项会再次添加到数组中。我需要阻止它 我的代码如下:- HTML:- <div class="cont

我是javascript和jquery的新手。我的一个函数在调用另一个函数时正在执行自身。我尝试了所有我能找到的方法来阻止这一切。但是当应用它们时,这个函数会完全停止执行。我只需要执行一次

我试图从javascript数组填充一个列表。第一个功能就是这样。然后我需要向该数组添加更多项,并用新数组填充列表。第二个函数addProcessFunc()用于此。但是在执行第二个函数时,第一个函数中的项会再次添加到数组中。我需要阻止它

我的代码如下:-

HTML:-

<div class="container">
    <label id="processError" class="validationError"></label>
    <div class="process">
        <div class="tab-content addProcess">
            <div id="home" class="tab-pane fade in active">
                <div class="addProcessDiv">
                <label>Process Name</label>
                <input type="text" id="processName" name="processName" class="form-control processName" />
                <button type="submit" onclick="addProcessFunc()" class="btn addButton">Add</button>
            <div class="sortList">
                <ul id="appendHere"></ul>                                  
                        <div class="saveBtn">
                            <button type="button" class="btn">Save</button>
                        </div>
                        </div>
                </div>
            </div>
        </div>
    </div>
</div>

进程名称
添加
    拯救
    JS:-

    
    var processArray=[];
    $(“document”).ready(function(){//我只需要执行一次。
    processArray.push({
    id:我,
    processName:Some\u进程
    });
    log(processArray);
    $(“#testTemplate”).tmpl(processArray).appendTo(“#appendHere”);
    });
    函数addProcessFunc(){
    var name=document.getElementById('processName')。值;
    如果(名称!=“”){
    我++
    processArray.push({
    id:我,
    processName:另一个_进程
    });
    log(processArray);
    $(“#testTemplate”).tmpl(processArray).appendTo(“#appendHere”);
    }否则{
    document.getElementById('processError').innerHTML=“必需”;
    }
    }
    
    • ${processName}

    这只向添加的列表中添加了一项,问题是您已经在外部声明了数组,所以每次都会复制元素

    <script type="text/javascript">
        var i=1;
        $("document").ready(function(){ //I need this to be executed only once.
            var processArray = [];
                Some_Process = 'test';
                processArray.push({
                    id: i,
                    processName: Some_Process
                });
                console.log(processArray);
                $("#testTemplate").tmpl(processArray).appendTo("#appendHere");
        });
        function addProcessFunc(){
            var processArray = [];
            var name = document.getElementById('processName').value;
            if (name != ""){
                i++
                    processArray.push({
                        id: i,
                        processName: name
                    });
                    console.log(processArray);
                $("#testTemplate").tmpl(processArray).appendTo("#appendHere");
            } else {
                document.getElementById('processError').innerHTML = "Required";
            }
        }
    </script>
    
    
    var i=1;
    $(“document”).ready(function(){//我只需要执行一次。
    var processArray=[];
    某些_过程=‘测试’;
    processArray.push({
    id:我,
    processName:Some\u进程
    });
    log(processArray);
    $(“#testTemplate”).tmpl(processArray).appendTo(“#appendHere”);
    });
    函数addProcessFunc(){
    var processArray=[];
    var name=document.getElementById('processName')。值;
    如果(名称!=“”){
    我++
    processArray.push({
    id:我,
    processName:name
    });
    log(processArray);
    $(“#testTemplate”).tmpl(processArray).appendTo(“#appendHere”);
    }否则{
    document.getElementById('processError').innerHTML=“必需”;
    }
    }
    
    这只向添加的列表中添加了一项,问题是您已经在外部声明了数组,所以每次都会复制元素

    <script type="text/javascript">
        var i=1;
        $("document").ready(function(){ //I need this to be executed only once.
            var processArray = [];
                Some_Process = 'test';
                processArray.push({
                    id: i,
                    processName: Some_Process
                });
                console.log(processArray);
                $("#testTemplate").tmpl(processArray).appendTo("#appendHere");
        });
        function addProcessFunc(){
            var processArray = [];
            var name = document.getElementById('processName').value;
            if (name != ""){
                i++
                    processArray.push({
                        id: i,
                        processName: name
                    });
                    console.log(processArray);
                $("#testTemplate").tmpl(processArray).appendTo("#appendHere");
            } else {
                document.getElementById('processError').innerHTML = "Required";
            }
        }
    </script>
    
    
    var i=1;
    $(“document”).ready(function(){//我只需要执行一次。
    var processArray=[];
    某些_过程=‘测试’;
    processArray.push({
    id:我,
    processName:Some\u进程
    });
    log(processArray);
    $(“#testTemplate”).tmpl(processArray).appendTo(“#appendHere”);
    });
    函数addProcessFunc(){
    var processArray=[];
    var name=document.getElementById('processName')。值;
    如果(名称!=“”){
    我++
    processArray.push({
    id:我,
    processName:name
    });
    log(processArray);
    $(“#testTemplate”).tmpl(processArray).appendTo(“#appendHere”);
    }否则{
    document.getElementById('processError').innerHTML=“必需”;
    }
    }
    
    注意:在您的具体案例中,请查看Karthikeyan sundaramoorthi的答案


    供将来参考,通用解决方案:

    //您希望此函数只执行一次
    函数myFunction(){
    如果(!this.done){
    this.done=true;
    log(“我正在跑步”);
    }
    }

    点击我
    注意:在您的具体案例中,请查看Karthikeyan sundaramoorthi的答案


    供将来参考,通用解决方案:

    //您希望此函数只执行一次
    函数myFunction(){
    如果(!this.done){
    this.done=true;
    log(“我正在跑步”);
    }
    }

    单击我
    你能说清楚你的问题吗?你能说清楚你的问题是什么吗?你想用
    $(document)
    替换它吗?如果这是问题的根源,我会很惊讶
    I
    定义在哪里?为什么不为
    processArray使用一个命名函数。将
    推送到
    附录
    ?老实说,他甚至不需要$(document),使用jQuery他可以用$()替换它,并且可以达到同样的效果。我很想知道tmpl是从哪里来的,因为我没有看到它被声明。但最简单/最懒惰的方法是将全局变量设置为false,在函数周围检查全局变量是否为false,运行函数,然后将全局变量更新为true,从而防止其再次执行。但这是一种懒惰的做法。@Karthikeyansundaramoorth我补充了关于我的问题的细节。你能不能说清楚你的问题,以及你想在哪些方面实现
    $(“文档”)
    tr