我在JS& amp;编写简单的计算器jQuery和我遇到了奇怪的行为。在下面的代码中,您会看到变量 equation ,其中包含在计算器上按下的每个数字。然后我使用eval()
来评估。
问题是, equation 变量的值是你期望但最终 undefined 的结果,并且无法找出原因。
整个项目:http://codepen.io/ketus/full/XmYRoV/
提前感谢您的帮助!
PS:我知道关于eval()
的一般意见。它仅用于测试,所以我可以移动。在解决 undefined 的问题后,我将实现自己的解决方案。
$(document).ready(function() {
var equation = '';
var input = $('h2[data-value]');
var info = $('#info');
//get keys
var keys = $('.key').filter(function() {
return $(this).data('key');
}).get();
//get operators
var operators = $('.operator').filter(function() {
return $(this).data('operator');
}).get();
//Clearing input
$('.clear').click(function(){
equation = '';
input.html('');
info.html('');
});
//user press keys, check if correct after each click
$('.key').click(function(){
equation += $(this).data('key');
//evaluateEquation();
input.html(equation);
});
//showing result
$('a[data-calc]').click(function(){
input.html(eval(equation.toString()));
});
// rules for equation to be correct
//function evaluateEquation() {
//}
function calculate(){
if(equation.length > 0){
return eval(equation);
} else {
info.html('Enter something!');
return '';
}
}
});
答案 0 :(得分:3)
主要问题是用户按下事件处理程序。如果按下data('key')
,则不应附加=
。例如,您可以像这样排除此按钮:
//user press keys, check if correct after each click
$('.key:not([data-calc])').click(function(){
equation += $(this).data('key');
input.html(equation);
});