Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 3.682 pregleda

Najnovija ↓

Javascript jednačina 08.02.2011. u 20:41 · pre 191 mesec #1
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?
Potpis
SlaveNewWorld
Re: Javascript jednačina 09.02.2011. u 00:09 · pre 191 mesec #2
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.
Re: Javascript jednačina 09.02.2011. u 13:50 · pre 191 mesec #3
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?
Potpis
SlaveNewWorld
Re: Javascript jednačina 09.02.2011. u 14:12 · pre 191 mesec #4
@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.
Re: Javascript jednačina 09.02.2011. u 14:27 · pre 191 mesec #5
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.
Potpis
SlaveNewWorld
Re: Javascript jednačina 09.02.2011. u 14:29 · pre 191 mesec #6
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)

Re: Javascript jednačina 09.02.2011. u 14:34 · pre 191 mesec #7
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.
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Re: Javascript jednačina 09.02.2011. u 14:47 · pre 191 mesec #8
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;
Potpis
SlaveNewWorld
Re: Javascript jednačina 09.02.2011. u 14:49 · pre 191 mesec #9
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme