如何在javascript中强制添加而不是连接

Mau*_*ore 48 jquery scope concatenation addition

我正在尝试在我的javascript中添加所有卡路里内容,如下所示:

$(function() {
    var data = [];

    $( "#draggable1" ).draggable();
    $( "#draggable2" ).draggable();
    $( "#draggable3" ).draggable();

    $("#droppable_box").droppable({
        drop: function(event, ui) {
            var currentId = $(ui.draggable).attr('id');
            var total = 0;
            data.push($(ui.draggable).attr('id'));

            if(currentId == "draggable1"){
            var myInt1 = parseFloat($('#MealplanCalsPerServing1').val());
            }
            if(currentId == "draggable2"){
            var myInt2 = parseFloat($('#MealplanCalsPerServing2').val());
            }
            if(currentId == "draggable3"){
            var myInt3 = parseFloat($('#MealplanCalsPerServing3').val());
            }
        if ( typeof myInt1 === 'undefined' || !myInt1 ) {
        myInt1 = parseInt(0);
        }
        if ( typeof myInt2 === 'undefined' || !myInt2){
        myInt2 = parseInt(0);
        }
        if ( typeof myInt3 === 'undefined' || !myInt3){
        myInt3 = parseInt(0);
        }
        total = parseFloat(myInt1 + myInt2 + myInt3);
        $('#response').append(total);
        }
    });
    $('#myId').click(function(event) {
        $.post("process.php", ({ id: data }), function(return_data, status) {
            alert(data);
            //alert(total);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

而不是添加变量,他们得到连接.我已经尝试过使用parseInt,parseFloat和Number但我仍然只是连接而不是添加.请查看http://maureenmoore.com/momp_112412/121912_800.html上的查看源代码

SLa*_*aks 76

您的代码连接三个字符串,然后将结果转换为数字.

您需要通过调用每个变量每个变量转换为数字parseFloat().

total = parseFloat(myInt1) + parseFloat(myInt2) + parseFloat(myInt3);
Run Code Online (Sandbox Code Playgroud)

  • @JanDvorak:它使意图更清晰. (3认同)
  • Number也一样。 (2认同)
  • 我使用“Number()”来保持清晰。我仍然不明白为什么有时会发生有时不会。我有一个项目可以在本地运行而无需强制,但可以在我的实时服务器上连接。 (2认同)

vap*_*guy 14

也应该能够做到这一点:

total += eval(myInt1) + eval(myInt2) + eval(myInt3);
Run Code Online (Sandbox Code Playgroud)

这帮助了我一个不同但相似的情况.

  • 不要使用eval - 它是邪恶的!最好使用特定的parseFloat,如当前最高投票答案http://stackoverflow.com/a/13953998/283991 (5认同)
  • 为什么-1?为我工作. (2认同)