4

我需要能够将输入中的小数添加到 div 中的小数。下面是我的代码。现在,它只是将两个数字连接在一起。谢谢。

编辑:工作代码

<div id="addme">5.01</div>
<input type="text" id="anumber" value="">
<button id="add">Add Number to div</button>

$('#add').click(function() {
var number = parseFloat($('#anumber').val()) || 0;
//alert(number);
$('#addme').html(function(i, val) {
return (parseFloat(val) + number).toFixed(2);
});
});

旧的非工作代码如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

<div id="addme">5.01</div>

<input type="text" id="anumber" value="" />

<button id="add">Add Number to div</button>

<script type="text/javascript">
    $('#add').click(function(){
        var number = $('#anumber').val();
        if(number=='undefined' || number==''){
            var number=0;
        }
        //alert(number);
        $('#addme').html(function(i, val) {return val*1+number });
    });
</script>
4

6 回答 6

1

由于您正在处理十进制数字,请使用parseFloat()

$('#add').click(function() {
    var number = parseFloat($('#anumber').val()) || 0;
    $('#addme').html(function(i, val) {
        return parseFloat(val) + number;
    });
});​

http://jsfiddle.net/mblase75/47t7x/

更新

由于您可能会引入浮点数学错误(尝试输入“0.6”),您应该在返回之前将其四舍五入到合适的小数位数(如果处理美元和美分,则为 2;如果处理其他度量,则为 7 或更多):

$('#add').click(function() {
    var number = parseFloat($('#anumber').val()) || 0;
    $('#addme').html(function(i, val) {
        return parseFloat((parseFloat(val) + number).toFixed(9)); 
    });
});​

http://jsfiddle.net/mblase75/47t7x/1/

于 2012-05-22T18:51:57.403 回答
0

您应该为此使用 parseInt()。

$('#addme').html(function(i, val) {return parseInt(val,10)+parseInt(number,10) });
于 2012-05-22T18:48:47.227 回答
0

只需确保将字符串解析为实际数值即可。

function(i, val) {return parseFloat(val)*1+parseFloat(number) }
于 2012-05-22T18:49:36.173 回答
0
// On the click event of #add
$('#add').on("click", function(){
    // n is equal to #anumber, or 0 if #anumber is blank
    var n = $('#anumber').val() || 0
    // Determine new HTML content for #addme
    $('#addme').html(function(i,v) {
        // Return the sum of n and v floated, to two decimal places
        return ( parseFloat(n) + parseFloat(v) ).toFixed(2);
    });
});​

小提琴:http: //jsfiddle.net/G8nka/1/

于 2012-05-22T18:50:08.770 回答
0

要将字符串转换为数字,您可以使用+字符串值之前的技巧。它将字符串值转换为数字。此代码工作正常:

$('#add').click(function() {
    var number = +$('#anumber').val() || 0;
    $('#addme').html(function(i, val) {
        return (+val + number).toFixed(2);
    });
});​

演示:http: //jsfiddle.net/K9g49/

于 2012-05-22T18:51:57.263 回答
0

在您的代码中,您似乎想要总和,而不是这里的连接是总和的代码,您需要将其放在 $(document).ready 上,因为您的代码在对象可用之前运行。

    $(document).ready(function() {
        $('#add').click(function(){
            var number = $('#anumber').val();
            if(number=='undefined' || number=='')
                number=0;
            var target=$('#addme');
            target.html(1*target[0].innerHTML+1*number);
        });
    });

如果你想要连接只需删除 1*

于 2012-05-22T19:06:25.667 回答