Javascript 如果出现条件,则停止执行IIFE
我正在尝试构建一个为用户工作周制定计划的应用程序,除了用户输入重复的错误显示时间外,一切都正常,但我的问题是应用程序仍在运行,计划显示在UI中 因此,我尝试使用Javascript 如果出现条件,则停止执行IIFE,javascript,iife,Javascript,Iife,我正在尝试构建一个为用户工作周制定计划的应用程序,除了用户输入重复的错误显示时间外,一切都正常,但我的问题是应用程序仍在运行,计划显示在UI中 因此,我尝试使用return关键字来阻止应用程序继续工作,但没有奏效,因此下面是我的代码: JavaScript: var internalController = (function(UICtrl) { var Plan = function(id, from, to, text, goingToCkecked) { this.id =
return
关键字来阻止应用程序继续工作,但没有奏效,因此下面是我的代码:
JavaScript:
var internalController = (function(UICtrl) {
var Plan = function(id, from, to, text, goingToCkecked) {
this.id = id;
this.from = from;
this.to = to;
this.text = text;
this.goingToCkecked = goingToCkecked;
};
var data = {
Monday: [],
Tuesday: [],
Wednesday: [],
Thursday: [],
Friday: [],
Saturday: [],
Sunday: []
};
//the array of the from inputs
var fromT = [];
//the array of the to inputs
var toT = [];
var Dom = UICtrl.getDOMstrings();
function removeError(x, y) {
document.querySelector(x).style.visibility = "hidden";
document.querySelector(y).classList.remove("error-red");
}
function showER() {
document.querySelector(Dom.errorCase).style.visibility = "visible";
document.getElementsByClassName(Dom.errorDes)[0].innerHTML = "the \" From time \" is already chosen";
document.querySelector(Dom.inputTimeF).classList.add("error-red");
}
var exit;
return {
refuseDuplicatedPlans: function(from, to) {
var exit;
if (fromT.indexOf(from) === -1) {
fromT.push(from);
exit = false;
} else {
console.log('value already exist');
showER();
exit = true;
}
}
};
})(UIController);
var controller = (function(interCtrl, UICtrl) {
var input, newPlan, DOM;
DOM = UICtrl.getDOMstrings();
function setupEventListeners() {
document.querySelector(DOM.inputBtn).addEventListener("click", ctrlAddPlans);
document.addEventListener("keypress", function(e) {
if (e.keyCode === 13) {
document.activeElement.blur();
ctrlAddPlans();
}
});
}
function removeFocus() {
console.log('remove Focus got trigered');
document.querySelector(DOM.inputTimeF, DOM.inputTimeT, DOM.inputText).addEventListener("focus", function() {
// document.activeElement.blur();
console.log("hello world");
});
}
var ctrlAddPlans = function() {
//3.get the filed input data
input = UICtrl.getInput();
console.log(input);
// 4.Refuse duplicated plans
interCtrl.refuseDuplicatedPlans(input.inputTimeF, input.inputTimeT);
//5.add the plan to the internalController
newPlan = interCtrl.addItem(input.inputDay, input.inputTimeF, input.inputTimeT, input.inputText, input.goingToCkecked);
//6.add the plan to the UI
UICtrl.addPlanList(newPlan, input.inputDay);
//7.clear the fields;
interCtrl.clearFields(UICtrl.getDOMstrings().inputTimeF, UICtrl.getDOMstrings().inputTimeT, UICtrl.getDOMstrings().inputText);
};
return {
init: function() {
console.log('the app has started');
setupEventListeners();
},
};
})(internalController, UIController);
controller.init();
我希望短路在refuseDuplicatedPlans(
)方法之后出现在控制器模块中当然,如果它返回true,我希望模块停止执行并提前感谢各位。您的refuseDuplicatedPlans()方法现在不返回任何内容。请添加一个返回语句,如下所示
refuseDuplicatedPlans: function(from, to) {
var exit;
if (fromT.indexOf(from) === -1) {
fromT.push(from);
exit=false;
} else {
console.log('value already exist');
showER();
exit=true;
}
return exit;
}
之后,您可以放置if-else调用,如果为true,则停止执行
if(interCtrl.refuseDuplicatedPlans(input.inputTimeF, input.inputTimeT)){
reutrn;
}
请将您的尝试笔记准确地贴在您被卡住的地方。作为旁注,优化您的语法将使您受益匪浅。变量不是在顶部声明的,您可以通过使用闭包更好地使用函数来处理小任务,而不是使它们与代码的其余部分紧密耦合