我是JavaScript中的乞丐,当我处理if/else条件时,发生了一些事情,但我仍然无法理解它.我的代码很简单:提示询问用户是否要进行加法或减法,然后以下2个提示询问一个值,并根据用户的答案,代码通过使用提供的值分别执行加法或减法.
当用户点击提示上的"取消"或"确定"按钮时,问题就会出现,如果点击这些按钮中的任何一个,我的代码会执行某些操作,它确实会执行,但它也会执行另一个我不希望它执行的操作.
如果用户单击"取消"或"确定",代码应提醒以下消息并完成执行:
(alert '未输入选项,中止操作!')
该代码成功提醒该消息,但也会提醒另一条消息,该消息仅在用户输入与SUMA或RESTA不同的值时才会显示.信息是这样的:
(alert '未输入有效选项,正在中止操作!');
然后我修改了代码,它按预期工作,但据我说,代码的第一个版本应该可以正常工作,没有任何问题.目标是在单击"取消"或"确定"按钮并完成执行时仅显示第一条消息,而不是同时显示两条消息并完成执行.
我希望足够清楚,如果我不清楚,请告诉我,如果有必要,我可以更详细地解释.有人能向我解释一下这里有什么问题吗?
以下是片段:
第一个版本(未按预期工作):
let opText = document.getElementById('opText');
let opOperation = prompt('Enter SUMA or RESTA');
let opSuma1;
let opSuma2;
let opStatus = true;
let opResult;
if(opOperation === null || opOperation === ""){
(alert '未输入选项,中止操作!'); **//THE CODE DISPLAYS THIS MESSAGE IF EITHER 'CANCEL' OR 'OK' BUTTONS ARE CLICKED**
opStatus = false;
}
else {
opOperation = opOperation.trim().toLowerCase();
}
function addition(){
opSuma1 = prompt('Enter first value:');;
opSuma2 = prompt('Enter second value:');
opSuma1 = Number(opSuma1);
opSuma2 = Number(opSuma2);
opResult = opSuma1 + opSuma2;
opText.textContent = `Your result was a ADDITION and it is ${opResult}`;
}
function substraction(){
opSuma1 = prompt('Enter first value:');;
opSuma2 = prompt('Enter second value:');
opSuma1 = Number(opSuma1);
opSuma2 = Number(opSuma2);
opResult = opSuma1 - opSuma2;
opText.textContent = `Your result was a SUBSTRACTION and it is ${opResult}`;
}
if(opStatus && opOperation === 'suma'){
addition();
}
else if(opStatus && opOperation === 'resta'){
substraction();
}
**else {
(alert '未输入有效选项,正在中止操作!'); **// BUT IT ALSO DISPLAYS THIS MESSAGE**
}**
第二版本(按预期工作)
let opText = document.getElementById('opText');
let opOperation = prompt('Enter SUMA or RESTA');
let opSuma1;
let opSuma2;
let opStatus = true;
let opResult;
if(opOperation === null || opOperation === ""){
(alert '未输入选项,中止操作!');
opStatus = false;
}
else {
opOperation = opOperation.trim().toLowerCase();
}
function addition(){
opSuma1 = prompt('Enter first value:');;
opSuma2 = prompt('Enter second value:');
opSuma1 = Number(opSuma1);
opSuma2 = Number(opSuma2);
opResult = opSuma1 + opSuma2;
opText.textContent = `Your result was a ADDITION and it is ${opResult}`;
}
function substraction(){
opSuma1 = prompt('Enter first value:');;
opSuma2 = prompt('Enter second value:');
opSuma1 = Number(opSuma1);
opSuma2 = Number(opSuma2);
opResult = opSuma1 - opSuma2;
opText.textContent = `Your result was a SUBSTRACTION and it is ${opResult}`;
}
if (opStatus) {
if (opOperation === 'suma') {
addition();
} else if (opOperation === 'resta') {
substraction();
} else {
(alert '未输入有效选项,正在中止操作!');
}
}