所以,我试图在javascript / jquery中编写一个简单的计算器应用程序,并遇到了麻烦。理论上,程序应该存储第一个数字点击的值,输入下一个触发操作按钮的主体(+, - ,/,*)点击事件功能,然后在执行指定之前等待下一个数字按钮点击事件对这两个数字起作用。我试图在操作点击事件函数中停止程序直到用户选择第二个数字的方式是输入这样的while循环:
idCard
问题是while循环会占用所有可用内存,并在选择第二个值之前崩溃程序。是否有一些安全的方法可以在操作点击事件功能中停止程序,直到选择第二个值?非常感谢任何建议。
答案 0 :(得分:2)
当人按下相等按钮时,为什么不执行操作,而不是等待下一个号码?也就是说,当您单击第一个按钮时,您可以设置如下内容:
var left_operand = 5;
然后当他们按下操作员时:
var operator = 'add';
当他们按下另一个按钮时:
var right_operand = 10;
最后当他们按下时:
var result = evaluate(left_operand, right_operand, operation);
对操作数使用数组可能很有用,而不是left
和right
,甚至是stack。
请注意,您不必使用"等于"按钮如果你不想,那么关键是当用户键入第二个数字时设置值。因此,当您按下运算符时,不是while loop
,而是if statement
,如果没有第二个值,则不会执行该操作。如果有,你会的。但是,只有在提交时才应设置第二个值,并且无需等待。但是,我认为当用户单击操作按钮时,只需将操作员变量分配给正确的值,并在单击等号按钮时使用该变量就更容易了。
答案 1 :(得分:0)
由于您是在点击事件上执行语句,请尝试以下操作:
var firstValue,
secondValue;
enter code here
$("#operation").on("click", function() {
if (typeof firstValue === 'undefined') {
firstValue = **TheValue**;
}
else if (typeof secondValue === 'undefined') {
secondValue = **TheValue**;
operation(firstValue, secondValue);
// of course, don't forget to clear both variables after you're done
}
});
您的原始代码差不多了。
JavaScript是单线程,因此您的while
循环可能会挂起您的页面。