Tworzę stronę, która ustawia 2 atrybuty, a następnie próbuję odwołać się do tych atrybutów po załadowaniu strony.

Udało mi się ustawić atrybuty bez problemu, udało mi się odnieść się do atrybutów, jeśli ciężko jest kodować je w atrybutach kredytowych i debetowych.

Ale starając się nazywać ich dynamicznie, nie działa. Otwarte na sugestie.

<div class="net" credit="" debit=""></div>


$(document).ready(function() {
    ... some fancy code involving arrays and junk ...
    if(TYPE == 'credit') {
        $(".net").attr('credit',data.response.stats.total);
    } else if (TYPE = 'debit') {
       $(".net").attr('debit',data.response.stats.total);
    }
});

$(window).bind("load", function() {
    afterPageLoad();
});

function afterPageLoad(){
    total_credit = $(".net").attr('credit');
    total_debit = $(".net").attr('debit');
    total = (total_credit - total_debit);
    $(".net").html( "$"+total );
}
3
Ben 22 listopad 2013, 07:19

3 odpowiedzi

Aby przeczytać dynamiczne wartości atrybutów, musisz użyć prop() zamiast attr().

Idealnie jednak należy przechowywać wartości niestandardowe w atrybucie data- (I. data-credit), a następnie użyj metody jQuery's {X2}}, aby uzyskać / ustawić wartość.

0
Steve 22 listopad 2013, 03:27

Podczas chwytania atrybutów dla total_credit i total_debit powinieneś użyć parseFloat();

Ex: parseFloat( $(".net").attr('credit') );

Powinieneś również ustawić awans w przypadku, gdy atrybut nie jest ustawiony.

Ex: total_credit = parseFloat($(".net").attr('credit')) || 0;

$(document).ready(function() {
    var TYPE = 'credit';
    if(TYPE == 'credit') {
        $(".net").attr('credit', 123);
    } else if (TYPE = 'debit') {
       $(".net").attr('debit', 53);
    }
});

$(window).bind("load", function() {
    afterPageLoad();
});

function afterPageLoad(){
    total_credit = parseFloat($(".net").attr('credit'))||0;
    total_debit = parseFloat($(".net").attr('debit'))||0;
    total = (total_credit - total_debit);
    $(".net").html( "$"+total );
}
0
Shawn G. 22 listopad 2013, 03:33

Problemem jest "... jakiś fantazyjny kod obejmujący tablice i śmieci ..."

data.response Sugeruje, że wykonujesz połączenie AJAX, które jest asynchroniczne i próbujesz przeczytać atrybuty, zanim zostaną ustawione.

Umieść logikę w wywołaniu wywołania zwrotnego połączenia AJAX, nie zadzwoń do części Onload.

1
epascarello 22 listopad 2013, 03:31