JavaScript 中的顺序算术运算



我有一个文本输入,用户将编写一个字符串,例如10+20-10-2*2+4/2,我想按顺序进行算术运算,这意味着我想(10+20)-(10)-(2)*(2)+(4)/(2),结果应该根据上面的例子20

换句话说,我想从左边按顺序进行算术运算。任何人都可以帮我解决这个问题,或者可能是一些想法也会很好。谢谢。

如果需要更多信息,请询问我。

$('#calculation').on('blur', function(e){
    e.preventDefault();
    var pattern=/^[-*/+0-9]+$/;
    value=$(this).val();
    if(value.match(pattern))
    {
        $(this).closest('tr').find('span.error').html('');
        //$('#total').val(eval(value));
        // No idea what to do
    }
    else
    {
        $(this).closest('tr').find('span.error').html('Invalid character');
    }
});

试试这个:

var str = '10+20-10-2*2+4/2';
var numbers = str.replace(/ /g, '').split(/[-+*/]/g);
var operators = str.replace(/ /g, '').split(/d*/g);
operators.shift();
var result = +numbers[0];
for (var i = 0; i < operators.length - 1; i++) {
    result = eval( result + operators[i] + numbers[i + 1] );
}
alert(result)​;

演示

使用 eval 计算值怎么样?

$('#calculation').on('blur', function(e){
    e.preventDefault();
    var pattern=/^[-*/+0-9]+$/;
    value=$(this).val();
    if(value.match(pattern))
    {
        $(this).closest('tr').find('span.error').html('');
        //$('#total').val(eval(value));
        alert(eval(value));
        $('span.result').html(eval(value));
    }
    else
    {
        $(this).closest('tr').find('span.error').html('Invalid character');
    }
});​

查看演示 http://jsfiddle.net/gineshkumar/gRc9r/

最新更新