Расчеты JQuery, дающие результаты NaN - PullRequest
2 голосов
/ 26 января 2011

Этот код полностью функционален в своей работе по выявлению и сокрытию контейнеров, однако вычисления производят NaN. Я никогда раньше не пробовал математику с JQuery, поэтому, возможно, один из вас покажет мне, где я ошибся.

function product_analysis_global() {
$(':checked').each(function(){
    $('#product_' + this.alt).css('display','block');
    $('#product_quantity_PRI_' + this.alt).val(this.value);
    var quantity = $('#product_quantity_PRI_' + this.alt).val;
    var price = $('#product_price_PRI_' + this.alt).val;
    var duration = $('#product_duration_PRI_' + this.alt).val;
    var dives = $('#product_dives_PRI_' + this.alt).val;
    var hire = $('#product_quantity_PRI_' + this.alt).val;

    $('#product_price_total_PRI_' + this.alt).val(price * quantity);
    $('#product_duration_total_PRI_' + this.alt).val(duration * quantity);
    $('#product_dives_total_PRI_' + this.alt).val(dives * quantity);
    $('#product_hire_total_PRI_' + this.alt).val(hire * quantity);
});
    $(':not(:checked)').each(function(){
        $('#product_' + this.alt).css('display','none');
        $('#product_quantity_PRI_' + this.alt).val('0');
        var quantity = $('#product_quantity_PRI_' + this.alt).val;
        var price = $('#product_price_PRI_' + this.alt).val;
        var duration = $('#product_duration_PRI_' + this.alt).val;
        var dives = $('#product_dives_PRI_' + this.alt).val;
        var hire = $('#product_quantity_PRI_' + this.alt).val;

    $('#product_price_total_PRI_' + this.alt).val(price * quantity);
    $('#product_duration_total_PRI_' + this.alt).val(duration * quantity);
    $('#product_dives_total_PRI_' + this.alt).val(dives * quantity);
    $('#product_hire_total_PRI_' + this.alt).val(hire * quantity);

}); }

Marvelous

Ответы [ 3 ]

5 голосов
/ 26 января 2011

Все ваши .val s (без скобок) нуждаются в скобках после них: ().В противном случае вы получаете val функцию , а не фактическое значение, которое возвращает функция.

Например,

var quantity = $('#product_quantity_PRI_' + this.alt).val(); // brackets

Кроме того, будетосторожно с .val(), который возвращает строку .В вашем сценарии здесь нет ошибок, потому что вы выполняете только умножение, и строки автоматически преобразуются в числа.Но, если у вас есть дополнение, строки будут объединены : '1' + '1' = '11'.Чтобы предотвратить это (и быть безопасным даже в вашем примере), поместите один знак плюс перед возвращаемым значением из .val(), чтобы преобразовать строку в число:

var quantity = +$('#product_quantity_PRI_' + this.alt).val();
2 голосов
/ 26 января 2011

Используйте .val() вместо .val

0 голосов
/ 26 января 2011

Вы, вероятно, для расчетов со строками. Если вы сомневаетесь, если x - число, используйте:

parseInt(x) 

безусловно, это число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...