PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
JS ja liitmine
Postitaja: joker 2011-05-15 12:45:02
Kood:
var test = $('#total_quantity').val() + $('#quantity').val();
alert (test);

Tulemus:
0.001.00

Script peaks tegema aga liitmistehte, ning andma tulemuseks 1 või 1.00.

Oskab keegi ütelda, mis valesti?!
RE: JS ja liitmine
Postitaja: fdfgdfgdfg 2011-05-15 12:51:01
liidad stringe
RE: JS ja liitmine
Postitaja: - 2011-05-15 14:18:49
Stringide liitmine jah, lase liidetavad parseFloat()'ist läbi
RE: JS ja liitmine
Postitaja: blaa 2011-05-15 16:50:15
olen leidnud, et kõige lihtsam ja lühem on string korrutada lihtsalt 1-ga läbi

var summa = document.getElementById('hind').value*1 + document.getElementById('transpordikulu').value*1;

RE: JS ja liitmine
Postitaja: Interneti Troll 2011-05-18 17:00:41
Kõige paremini loetav lahendus on kasutada Number konstruktorfunktsiooni (Number(expr)).
Võib ka koos valideerimisega:

var asNum = function (expr) {
var num = Number(expr);
if (isNaN(num) {
throw new MingiMoistlikErind();
}
return num;
}
RE: JS ja liitmine
Postitaja: joker 2011-05-19 10:29:42
Ehk siis juba miskit sellist:


var asNum = function (expr) {return (isNaN(Number(expr)) ? expr * 1 : expr;}
RE: JS ja liitmine
Postitaja: rtfm 2011-05-19 12:07:19
TSITEERITUD:
Ehk siis juba miskit sellist:


var asNum = function (expr) {return (isNaN(Number(expr)) ? expr * 1 : expr;}


parseFloat() ja parseInt() meetodid on olemas ja pole vaja jalgratast leiutada
RE: JS ja liitmine
Postitaja: andrusny 2011-05-19 12:25:03
TSITEERITUD:


parseFloat() ja parseInt() meetodid on olemas ja pole vaja jalgratast leiutada


Kõige käepärasem ja ruumi kokku hoidvam on kirjutada see ühega korrutamine, iseasi, kuidas kiirusega on.
Võimalik, et ühega korrutamine kutsub automaatselt parseFloat() meetodi välja, siis võiks eeldada, et see on aeglasem. Kuid, kui tehtes on niigi vaja korrutada, siis peaks kindlasti see korrutamisega variant kiirem olema, kui eraldi veel parseFloat() sees nr läbi lasta. (pole tähtis , et üks on tähtis on numbriga korrutamine)

Viimati muudetud: 19-05-2011 12:28:13
Muutja: andrusny
Põhjus:

RE: JS ja liitmine
Postitaja: Interneti Troll 2011-05-19 19:30:06
TSITEERITUD:


parseFloat() ja parseInt() meetodid on olemas ja pole vaja jalgratast leiutada


Mille poolest on sõne "parseFloat" paremini loetav, kui "Number"? Või mille poolest on konstruktorfunktsioon jalgratta leiutamine? Lisaks tagastab ka parseFloat ebaõnnestumise korral NaN väärtuse. Seega peab ka seda funktsiooni valvama.
RE: JS ja liitmine
Postitaja: Interneti Troll 2011-05-19 19:31:51
TSITEERITUD:


Kõige käepärasem ja ruumi kokku hoidvam on kirjutada see ühega korrutamine, iseasi, kuidas kiirusega on.
Võimalik, et ühega korrutamine kutsub automaatselt parseFloat() meetodi välja, siis võiks eeldada, et see on aeglasem. Kuid, kui tehtes on niigi vaja korrutada, siis peaks kindlasti see korrutamisega variant kiirem olema, kui eraldi veel parseFloat() sees nr läbi lasta. (pole tähtis , et üks on tähtis on numbriga korrutamine)


Ilmselt on see küll käepärane aga koodi loetavus aga kannatab.
RE: JS ja liitmine
Postitaja: andris 2011-05-25 10:36:27
TSITEERITUD:
Kõige paremini loetav lahendus on kasutada Number konstruktorfunktsiooni (Number(expr)).


Faktitäpsuse huvides mainiks ära, et funktsioon on konstruktor (tagastab uue objekti, mis on selle konstruktori instants) ainult sellisel juhul, kui selle ees asub operaator new, vastasel korral on tegu "tavalise" funktsiooniga.


PHP kood:
 
// "tavaline" funktsioon
var nr Number(("123")
typeof nr === "number";
nr instanceof Number === false;

// konstruktorfunktsioon, operaatoriga 'new'
var nr = new Number(("123")
typeof nr === "object";
nr instanceof Number === true;

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0956020355225