[ zlatko @ 08.02.2011. 19:41 ] @
Nemam mnogo iskustva sa JSom. Mislio sam da umem barem jednostavnu jednačinu da napravim, ali izgleda ne umem ni to.

var zbir = ((( koeficijentcb * boja_array[0]) + materijal_array[0] + plastifikacija_array[0] ) * kolicina ) + priprema_array[0] ;

U čemu grešim kod ove jednačine?
[ japan @ 08.02.2011. 23:09 ] @
A sta je problem? Sta ocekujes, a sta dobijas? Na osnovu ovog parceta koda tesko da moze ista da se kaze, sem da ne znas prioritet operatora... :)

Daj malo siri kontekst.
[ zlatko @ 09.02.2011. 12:50 ] @
Problem je NaN , a ja očekujem broj :)

koeficijentcb = 322.000
boja_array[0] = 1.000
materijal_array[0] = 1.000
plastifikacija_array[0] = 2.000
kolicina = 48
priprema_array[0] = 1.000

Biće da ne znam prioritet operatora.
Može link ili pojašnjenje na brzinu?
[ Igor Gajic @ 09.02.2011. 13:12 ] @
@zlatko

Da li si apsolutno siguran da su to te vrednosti promenljivih u trenutku kada dodje do te naredbe ? Ovo lici kao da je jedna od njih string ili nije definisana(typo).

Btw. firebug ima tab Script koji je dusu dao za debugovanje.
[ zlatko @ 09.02.2011. 13:27 ] @
100% siguran.
Čak ni firebug ne izbacuje nikakav problem.
Izbacivao sam članove iz jednačine, jedan po jedan, da vidim gde nastaje problem i našao da se rešenje gubi između + materijal_array[0] + plastifikacija_array[0]. Dobijem rezultat čim jedno od ta dva izbacim.
[ japan @ 09.02.2011. 13:29 ] @
Verovatno je problem do inicijalizacije tih nizova. Evo dva moguca resenja, na brzinu testirano...

Code:

// da bi mogao da dodeljujes vrednosti clanovima niza, moras prvo da deklarises nizove
var boja_array = new Array();
var materijal_array = new Array();
var plastifikacija_array = new Array();
var priprema_array = new Array();

koeficijentcb = 322.000
boja_array[0] = 1.000
materijal_array[0] = 1.000
plastifikacija_array[0] = 2.000
kolicina = 48
priprema_array[0] = 1.000

var zbir = ((( koeficijentcb * boja_array[0]) + materijal_array[0] + plastifikacija_array[0] ) * kolicina ) + priprema_array[0] ;


Code:

// moze i ovako, deklaracija i dodela vrednosti odjednom
koeficijentcb = 322.000
boja_array = [1.000]
materijal_array = [1.000]
plastifikacija_array = [2.000]
kolicina = 48
priprema_array = [1.000]

var zbir = ((( koeficijentcb * boja_array[0]) + materijal_array[0] + plastifikacija_array[0] ) * kolicina ) + priprema_array[0] ;


Oba daju rezultat 15601.

Sto se tice prioriteta, * ima veci prioritet od +, tako da ne moras da pises (a*b) + c, mozes da napises bez zagrada, a*b + c, uvek ce se prvo mnoziti, pa tek onda sabirati. A ako hoces prvo sabiranje, pa onda mnozenje, onda ti trebaju zagrade a*(b + c)

[ Miroslav Ćurčić @ 09.02.2011. 13:34 ] @
kreni redom:
alert(koeficijentcb);
alert(boja_array[0]);
alert(materijal_array[0]);
alert(plastifikacija_array[0]);
alert(kolicina);
alert(priprema_array[0]);


ovo stavi pre jednačine pa gledaj šta ti prikazuje.
[ zlatko @ 09.02.2011. 13:47 ] @
krenuo redom...

322
1.000
1.000
2.000
48
1.000

evo i cele funkcije
Code:

        var koeficijent   = 2;
        var koeficijentcb   = 322.000;
        var koeficijentcolor   = 1280.000;
        
        var kolicina   = document.getElementById('kolicina').value;
        
        var bojadata   = document.getElementById('boja').value;
        var boja_array=bojadata.split("_");
        
        var materijaldata   = document.getElementById('materijal').value;
        var materijal_array=materijaldata.split("_");
        
        var pripremadata   = document.getElementById('priprema').value;
        var priprema_array=pripremadata.split("_");
        
        var plastifikacijadata   = document.getElementById('plastifikacija').value;
        var plastifikacija_array=plastifikacijadata.split("_");
        
        var kolicinaformat = document.getElementById("kolicinaformat");
        document.getElementById('kolicinaformat').value= kolicina;
        
        var bojaformat = document.getElementById("bojaformat");
        document.getElementById('bojaformat').value= boja_array[0];
        
        var materijalformat = document.getElementById("materijalformat");
        document.getElementById('materijalformat').value= materijal_array[0];
        
        var pripremaformat = document.getElementById("pripremaformat");
        document.getElementById('pripremaformat').value= priprema_array[0];
        
        var plastifikacijaformat = document.getElementById("plastifikacijaformat");
        document.getElementById('plastifikacijaformat').value= plastifikacija_array[0];
        

        var zbir = ((( koeficijentcb * boja_array[0]) + materijal_array[0] + plastifikacija_array[0] ) *  kolicina ) + priprema_array[0] ;
        
        var zbir=Math.round(zbir*100)/100
        
        document.getElementById('zbir').value= zbir;
[ Igor Gajic @ 09.02.2011. 13:49 ] @
plastifikacija_array
priprema_array

ovo mi deluje kao niz stringova

probaj ovako:

Code:

var zbir = ((( koeficijentcb * boja_array[0]) + parseInt(materijal_array[0]) + parseInt(plastifikacija_array[0]) ) *  kolicina ) + parseInt(priprema_array[0]) ;


Edit:

Mala izmena, parsiranje string => int.
[ zlatko @ 09.02.2011. 14:12 ] @
Danke Man :)
sad radi