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