-
[JS] somme e sottrazioni
Buon giorno,
ho questi due codici, il primo per avere i numeri da sommare e sottrarre e il secondo che fa l'operazione:
Codice PHP:
<?php
$sqlabi1 = mysql_query("SELECT *
FROM
pg_abi,
classi_x_abilita,
pg_carat
WHERE
pg_carat.classe=classi_x_abilita.classe AND
classi_x_abilita.abilita=pg_abi.id AND
pg_carat.id=".$id."
ORDER BY
pg_abi.nome");
echo '<table><tr><td valign="top"><table><tr><td>Abilità di classe</td></tr>';
while ($row1 = mysql_fetch_array($sqlabi1)){
$classe=$row1['classe'];
$abi=$row1['abilita'];
echo '<tr><td>'.$row1['nome'].'</td><td>
<input type="text" id="abi['.$abi.']" name="abi['.$abi.']" value="';
$sqlabi = mysql_query ("SELECT *
FROM
pg_abi_scelte
WHERE
id_pg = ".$id." AND
id_abi = ".$abi);
if ($sqlabi != "0"){
while ($row = mysql_fetch_array($sqlabi)){
$valore=$row['valore'];
echo $valore;}
}else{
$valore = "0";
echo $valore;
}
echo '" class="input1LineCenter" size=\'2\' maxlength=\'2\' readonly>
<input type="button" name="increase" value="+" onClick="updateAbility(\'+\', \''.$abi.'\', \''.$valore.'\', '.$max_abi.');" class="bttn">
<input type="button" name="decrease" value="-" onClick="updateAbility(\'-\', \''.$abi.'\', \''.$valore.'\', '.$max_abi.');" class="bttn"> </td></tr>';
}
echo '</table></td><td>';
$sqlabi1x = mysql_query("SELECT *
FROM
pg_abi,
classi_x_abilita_incrociata,
pg_carat
WHERE
pg_carat.classe=classi_x_abilita_incrociata.classe AND
classi_x_abilita_incrociata.abilita=pg_abi.id AND
pg_carat.id=".$id."
ORDER BY
pg_abi.nome");
echo '<table><tr><td valign="top"><table><tr><td>Abilità di classe incrociata</td></tr>';
while ($row1x = mysql_fetch_array($sqlabi1x)){
$abix=$row1x['abilita'];
echo '<tr><td>'.$row1x['nome'].'</td><td>
<input type="text" id="abi['.$abix.']" name="abi['.$abix.']" value="';
$sqlabix = mysql_query ("SELECT *
FROM
pg_abi_scelte
WHERE
id_pg = ".$id." AND
id_abi = ".$abix);
if ($sqlabix != "0"){
while ($rowx = mysql_fetch_array($sqlabix)){
$valorex=$rowx['valore'];
echo $valorex;}
}else{
$valorex = "0";
echo $valorex;
}
echo '" class="input1LineCenter" size=\'2\' maxlength=\'2\' readonly>
<input type="button" name="aumenta" value="+" onClick="updateAbility(\'+\', \''.$abix.'\', \''.$valorex.'\', '.$max_abi_incr.');" class="bttn">
<input type="button" name="diminuisci" value="-" onClick="updateAbility(\'-\', \''.$abix.'\', \''.$valorex.'\', '.$max_abi_incr.');" class="bttn"> </td></tr>';
}
echo '</table></td></tr></table>';
?>
Codice:
function updateAbility(operation, name, minval, maxval) {
oAbility = document.getElementById("abi["+name+"]");
oTotale = document.getElementById("totale");
if(oAbility.value == minval && operation == "-") { return; }
if(oAbility.value == maxval && operation == "+") { return; }
if(operation == "+") {
if(oTotale.value == 0) { return; }
oAbility.value ++;
oTotale.value --;
}else if(operation == "-") {
oAbility.value --;
oTotale.value ++;
}
return;
}
function updateCar(operation, name, minval, maxval) {
oAbility = document.getElementById("car["+name+"]");
oTotale1 = document.getElementById("totcar");
if(oAbility.value == minval && operation == "-") { return; }
if(oAbility.value == maxval && operation == "+") { return; }
if(operation == "+") {
if(oTotale1.value == 0) { return; }
oAbility.value ++;
oTotale1.value --;
}else if(operation == "-") {
oAbility.value --;
oTotale1.value ++;
}
return;
}
Entrambi vengono richiamati nella stessa pagina e funzionano, sommando e sottraendo 1, come posso far sì che i numeri della seconda lista (e solo loro) sommino e tolgano 2 dallo stesso totale?
Grazie anticipatamente per l'aiuto
-
Potresti usare rispettivamente += 2 e -= 2.
Se non funzionassero, è perché probabilmente i valori degli elementi vengono in realtà presi come stringhe, e non come numerici (anche se composti da sole cifre). In questo caso, usa saggiamente la funzione parseInt() o parseFloat() per convertire il testo in intero o numero decimale.
Stammi bene...
-
Grazie ^.^ ne ho aggiunto un'altra funzione solo per quelle.
Ho provato in diverse maniere, solo che non riesco a capire come evitare che mi aggiunga la stringa "2" quando clicco sul meno ^.^" mentre quando uso il più funziona tutto alla perfezione
Codice:
function updateAbility1(operation, name, minval, maxval) {
oAbility = document.getElementById("abi["+name+"]");
oTotale = document.getElementById("totale1");
if((oAbility.value == minval || oAbility.value < minval) && operation == "-") { return; }
if((oAbility.value == maxval || oAbility.value > maxval) && operation == "+") { return; }
if(operation == "+") {
if(oTotale.value <= 1) { return; }
oAbility.value ++;
oTotale.value -= 2;
}else if(operation == "-") {
oAbility.value --;
oTotale.value += 2;
}
return;
}
-
Se rileggi meglio il mio post sopra, avevo già previsto il perché... dovresti convertire i valori dei campi (che sono letti come stringhe) in forma numerica, prima di eseguire la somma (il simbolo + in JavaScript è usato sia per l'addizione numerica che per la concatenazione di stringhe).
In altre parole:
Codice:
function updateAbility1(operation, name, minval, maxval) {
oAbility = document.getElementById("abi["+name+"]");
oTotale = document.getElementById("totale1");
if((oAbility.value == minval || oAbility.value < minval) && operation == "-") { return; }
if((oAbility.value == maxval || oAbility.value > maxval) && operation == "+") { return; }
if(operation == "+") {
if(oTotale.value <= 1) { return; }
oAbility.value = paseInt(oAbility.value) + 1;
oTotale.value = parseInt(oTotale.value) - 2;
}else if(operation == "-") {
oAbility.value = parseInt(oAbility.value) - 1;
oTotale.value = parseInt(oTotale.value) + 2;
}
return;
}
Stammi bene...
-
Grazie mille, ho letto, ma non conoscendo molto di js non sapevo come sistemarlo e avevo provato in diverse maniere tranne che in quella giusta ^.^