2015-12-13 4 views
1

У меня есть эта работа JS, которая проверяет, установлены или нет флажки, и присваивает другую цену для каждой, которая будет позже суммирована.jQuery сумма переменных

function priceCandy1() { 
    var priceCandy1 = 0; 
    var candy = document.getElementById("candy1"); 
    if(candy.checked==true) 
    { 
     priceCandy1=13; 
    } 
    return priceCandy1; 
} 

function calculateTotal() 
{ 
    var totalPrice = priceCandy1() + priceCandy2() + priceCandy3(); 
    document.getElementById('totalid').innerHTML = "$" + totalPrice; 
} 

Теперь я пытаюсь кодировать эквивалент в JQuery и эта функция делает работу:

$(function() { 
    var priceCandy1 = 0; 
    var candy = $('#candy1'); 
    $('#candy1').on('click',function() { 
     if (candy.is(':checked')) { 
      priceCandy1 = 13; 
     } 
    }); 
    return priceCandy1; 
}); 

Но я не могу схватить возвращенную цену в функцию, которая будет добавлять каждую priceCandy # , Вне рамок, но я не знаю, как это исправить.

ответ

0

Если это проблема с областью действия, как вы говорите, вы можете объявить priceCandy1 вне функции, как глобальную переменную.

var priceCandy1; 
$(function() { 
    priceCandy1 = 0; 
    var candy = $('#candy1'); 
    $('#candy1').on('click',function() { 
     if (candy.is(':checked')) { 
      priceCandy1 = 13; 
     } 
    }); 
}); 

Затем используйте ценуCandy1 в вашей общей цене, и она должна быть в состоянии получить ее.

+0

Я забыл упомянуть, я искал ответ без объявления глобалам. В любом случае, спасибо – scriptK

0

Заверните их в одной и той же функции:

$(function() { 
    var priceCandy1 = function() { 
     if($('#candy1').is(':checked')) { 
      return 13; 
     } 
     return 0; 
    }, 
    calculateTotal = function() 
    { 
     var totalPrice = priceCandy1() + priceCandy2() + priceCandy3(); 
     $('#totalid').text('$' + totalPrice); 
    }; 

    calculateTotal(); 
}); 
Смежные вопросы