PDA

View Full Version : [Javascript] Aggiungere o sottrarre un valore ad un innerHTML


x3d0
02-10-2009, 22:22
ho un campo div in cui c'è un prezzo in euro.
L'utente selezionando dei checkbox va ad aggiungere un tot di euro al prezzo finale. Il prezzo viene aggiornato il real time, quindi al prezzo nel div devo aggiungere il prezzo della checkbox.

Ho provato con += ma mi considera le variabili come stringhe e quindi le concatena.

<span id="total_price"></span>


function add(priceSupp, checkbox){


if (checkbox.checked) {
document.getElementById("total_price").innerHTML += formatCurrency(priceSupp);

}

if (checkbox.checked === false) {
document.getElementById("total_price").innerHTML -= formatCurrency(priceSupp);
}
}

gugoXX
03-10-2009, 00:41
ho un campo div in cui c'è un prezzo in euro.
L'utente selezionando dei checkbox va ad aggiungere un tot di euro al prezzo finale. Il prezzo viene aggiornato il real time, quindi al prezzo nel div devo aggiungere il prezzo della checkbox.

Ho provato con += ma mi considera le variabili come stringhe e quindi le concatena.

<span id="total_price"></span>


function add(priceSupp, checkbox){


if (checkbox.checked) {
document.getElementById("total_price").innerHTML += formatCurrency(priceSupp);

}

if (checkbox.checked === false) {
document.getElementById("total_price").innerHTML -= formatCurrency(priceSupp);
}
}

prova con la Eval

if (checkbox.checked) {
var tmp = document.getElementById("total_price").innerHTML;
var res = eval(tmp)+formatCurrency(priceSupp);
document.getElementById("total_price").innerHTML = res;
}

etc.

MEMon
03-10-2009, 11:23
Mai usare eval se non è strettamente necessario, e in questo caso non è assolutamente necessario, probabilmente non ti troverai mai costretto ad usare eval.

Puoi mantenere una variabile(numerica) che contenga il totale, e il prezzo della checkbox lo converti in int con parseInt(stringa,10).

gugoXX
03-10-2009, 11:58
Mai usare eval se non è strettamente necessario, e in questo caso non è assolutamente necessario, probabilmente non ti troverai mai costretto ad usare eval.

Puoi mantenere una variabile(numerica) che contenga il totale, e il prezzo della checkbox lo converti in int con parseInt(stringa,10).

Se e' per questo, mai usare JavaScript.

x3d0
03-10-2009, 14:37
prova con la Eval

if (checkbox.checked) {
var tmp = document.getElementById("total_price").innerHTML;
var res = eval(tmp)+formatCurrency(priceSupp);
document.getElementById("total_price").innerHTML = res;
}

etc.


non funziona. Mi aggiunge un 0 e non fa la somma.
Es. se devo aggiungere 323. mi scrive 0323

MEMon
03-10-2009, 22:20
Se e' per questo, mai usare JavaScript.

... :rolleyes:

Alien
04-10-2009, 13:45
non funziona. Mi aggiunge un 0 e non fa la somma.
Es. se devo aggiungere 323. mi scrive 0323


Puoi mantenere una variabile(numerica) che contenga il totale, e il prezzo della checkbox lo converti in int con parseInt(stringa,10).

Mi sembra il suggerimento corretto.

Se sei sicuro che l'innerHtml sia sempre numerico fai la somma parsandoInt l'innerhtml e il valore della checkbox.