Visualizzazione risultati 1 fino 5 di 5

Discussione: [JS] somme e sottrazioni

  1. #1
    Guest

    Predefinito [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>&nbsp;
    <input type="button" name="increase" value="+" onClick="updateAbility(\'+\', \''
    .$abi.'\', \''.$valore.'\', '.$max_abi.');" class="bttn">&nbsp;
    <input type="button" name="decrease" value="-" onClick="updateAbility(\'-\', \''
    .$abi.'\', \''.$valore.'\', '.$max_abi.');" class="bttn">&nbsp;</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>&nbsp;
    <input type="button" name="aumenta" value="+" onClick="updateAbility(\'+\', \''
    .$abix.'\', \''.$valorex.'\', '.$max_abi_incr.');" class="bttn">&nbsp;
    <input type="button" name="diminuisci" value="-" onClick="updateAbility(\'-\', \''
    .$abix.'\', \''.$valorex.'\', '.$max_abi_incr.');" class="bttn">&nbsp;</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
    Ultima modifica di abred : 18-11-2010 alle ore 14.22.45

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    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...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    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;
    }
    Ultima modifica di abred : 19-11-2010 alle ore 09.21.40

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    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...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    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 ^.^

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •