gpt4 book ai didi

javascript - 为什么等式的值最后没有定义?

转载 作者:行者123 更新时间:2023-11-30 12:12:08 26 4
gpt4 key购买 nike

我用 JS 和 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 '';
}
}

});

最佳答案

主要问题是用户按下事件处理程序。如果按下 =,则不应附加 data('key')。例如,您可以像这样排除此按钮:

  //user press keys, check if correct after each click 
$('.key:not([data-calc])').click(function(){
equation += $(this).data('key');
input.html(equation);
});

演示: http://codepen.io/anon/pen/qOKwOE?editors=101

关于javascript - 为什么等式的值最后没有定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33462849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com