Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    2 condizioni if con risultati medesimi in calcolo javascript

    salve a tutti, allora ragazzi il mio problema è il seguente:
    * sono una schiappa con lo javascript e tanto altro, nonostante tutto sono quasi riuscito osservando un pò di quà un pò di là a creare questo modulo, si tratta di un modulo di calcolo.
    propongo due alternative di calcolo entrambe funzionano su unico pulsante che deve calcolarmi approssimativamente il calcolo di : a * b * c /5000 qualora si viene scelto e inserito il dato b
    e calcolarmi invece : a * b1 * c / 5000 se invece viene scelto il dato b1.
    poi limito la visualizzazione del risultato ad alcuni valori.
    il codice che segue funziona se utilizzo b1, non riesco a impostare una ulteriore condizione con i propri risultati.

    ecco il codice:

    [SIZE=1]
    <SCRIPT LANGUAGE ="JavaScript">
    function arrotonda ( a )
    {
    // ritorna a approssimato a 2 cifre dopo la virgola
    a100 = a *100;
    a = Math.round (a100)/100;
    return a
    }
    function modalita_dimensionamento(z) {

    var x=document.getElementById("datob")
    var y=document.getElementById("datob1")
    if (z==1) {
    x.selectedIndex = 0;
    y.selectedIndex= 0;
    x.disabled=false;
    y.disabled=true;}
    else {
    x.selectedIndex = 0;
    y.selectedIndex= 0;
    x.disabled=true;
    y.disabled=false;}
    }
    function funzione(){
    fh=document.forms[0];
    a = fh.datoa.value;
    b = fh.datob.value * 150;
    b1 = fh.datob1.value;
    c = fh.datoc.value;
    d = 5000;
    due = a * b * c / 5000;
    tre = a * b1 * c / 5000
    fh.output2.value=arrotonda(due);
    if(due = "0") due = tre;
    if(due <= "10") fh.output2.value = 10;
    else if(due <= "20") fh.output2.value = 18;
    else if(due <= "32") fh.output2.value = 28;
    else if(due <= "42") fh.output2.value = 40;
    else if(due <= "54") fh.output2.value = 50;
    else if(due <= "70") fh.output2.value = 65;
    else if(due <= "90") fh.output2.value = 85;
    else if(due <= "105") fh.output2.value = 100;
    else if(due <= "130") fh.output2.value = 120;
    else if(due <= "160") fh.output2.value = 150;
    else if(due <= "190") fh.output2.value = 180;
    else if(due >= "190") alert("Richiedici un preventivo email: servizioclienti@depurweb.it");
    }
    </script>
    <style type="text/css">
    <!--
    .Stile2 {font-family: Arial, Helvetica, sans-serif}
    .Stile9 {font-size: 14px; font-family: Arial, Helvetica, sans-serif; }
    -->
    </style>
    <FORM name=form1 name="formselezione" id="formselezione" >

    <table width="579" border="1" cellspacing="0px" bordercolor="#E8E8E8" bgcolor="#FCFCFC">
    <tr>
    <td width="375" align="left" valign="middle"><span class="Stile2"> datoa</span></td>
    <td width="194" align="left" valign="middle"><span class="Stile2">
    <select name="datoa" id="datoa">
    <option selected>Seleziona...</option>
    <option value="15">15</option>
    <option value="20">20</option>
    <option value="25">25</option>
    <option value="30">30</option>
    <option value="35">35</option>
    <option value="40">40</option>
    <option value="45">45</option>
    <option value="50">50</option>
    </select>
    A
    </span></td>
    </tr>

    <tr>
    <td align="left" valign="middle"><span class="Stile2">Dimensiona in base a : </span></td>
    <td align="left" valign="middle">
    <span class="Stile2">
    <label>
    <input name="modalita" type="radio" value="1" onClick="modalita_dimensionamento(this.value)" checked="checked" >
    b</label>


    <input name="modalita" type="radio" value="0" onClick="modalita_dimensionamento(this.value)">
    b1 </span></td>
    </tr>

    <tr>
    <td align="left" valign="middle"><span class="Stile2">datob</span></td>
    <td align="left" valign="middle"><span class="Stile2">
    <select name="datob" id="datob">
    <option value="Non specificato.">Seleziona...</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="6">6</option>
    <option value="8">8</option>
    <option value="8">10</option>
    <option value="12">12</option>
    <option value="16">16</option>
    <option value="20">20</option>
    <option value="25">25</option>
    <option value="30">30</option>
    <option value="35">35</option>
    <option value="40">40</option>
    <option value="60">60</option>
    <option value="80">80</option>
    <option value="100">100</option>
    </select>
    b</span></td>
    </tr>
    <tr>
    <td align="left" valign="middle"><span class="Stile2">datob1</span></td>
    <td align="left" valign="middle"><span class="Stile2">
    <select name="datob1" id="datob1" disabled="disabled">
    <option value="Non specificato.">Seleziona...</option>
    <option value="300">300</option>
    <option value="500">500</option>
    <option value="750">750</option>
    <option value="1000">1000</option>
    <option value="1250">1250</option>
    <option value="1500">1500</option>
    <option value="1750">1750</option>
    <option value="2000">2000</option>
    <option value="2500">2500</option>
    <option value="3000">3000</option>
    <option value="4000">4000</option>

    <option value="6000">6000</option>
    <option value="8000">8000</option>
    <option value="10000">10000</option>
    </select>
    b1 </span></td>
    </tr>
    <tr>
    <td align="left" valign="middle"><span class="Stile2">datoc</span></td>
    <td align="left" valign="middle"><span class="Stile2">
    <select name="datoc" id="datoc">
    <option value="7">Seleziona...</option>
    <option value="2" >2</option>
    <option value="3">3</option>
    <option value="4" selected>4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    </select>
    C </span></td>
    </tr>
    <tr>
    <td height="28" align="left" valign="bottom"></td>
    <td align="left" valign="bottom"><span class="Stile9 Stile2">
    <input type=button value="CALCOLA" size="9" onclick="funzione()" />
    </span></td>
    </tr>
    <tr>
    <td height="23" align="left" valign="middle" class="menu-teepee Stile2"></td>
    <td align="left" valign="middle" class="Stile4 Stile2"></td>
    </tr>
    <tr>
    <td width="375" height="24"><div align="left" class="Stile9 Stile2">risultato</div></td>
    <td>

    <div align="left" class="Stile9 Stile2">
    <input type="text" name="output2" value="" size="14" style="text-align: right;"/>
    approssimativo
    </div></td>
    </tr>
    </table>

    </form>

    grazie anticipatamente dell'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    manca un ; nella dichiarazione della variabile tre

  3. #3
    ok quello l'ho corretto ma cmq il problema non è risolto .
    io vorrei che anche se b > 0 lui mi limiti lo stesso i risultati con quelli elencati.
    mentre in questo momento mi scrive esattamente il risultato senza limitarlo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    if(b>0)fh.output2.value = 'Limitazione';

  5. #5
    mi spiego meglio:
    qualora io scelgo b lui deve calcolarmi e limitarmi il calcolo due = a x b x c /5000
    qualora io scelgo b1 lui deve calcolarmi e limitarmi il calcolo tre = a x b1 x c /5000

    in pratica io vorrei che lui mi limiti il calcolo matematico totale.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ho forti dubbi che vada bene stai confrontando un numero due = a * b * c / 5000 con una stringa "20" (tutto quello delimitato dalle virgolette e stringa cioè testo), inoltre:
    Quando imposti delle variabili meglio anteporre var per recuperare i valori delle select la sintassi è document.getElementById("datob").options[document.getElementById("datob").selectedIndex].value
    meglio sempre delimitare gli if e else con le parentesi graffe
    if(due <= "10"){
    fh.output2.value = 10;
    }else if(due <= "20"){ fh.output2.value = 18;
    }etc...
    l'arrotondamento [fh.output2.value=arrotonda(due);] eseguilo prima di fare inserimento dov'è ora non serve a niente
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    allora ho effettuato le modifiche che mi hai detto, l'unica che non ho capito è lultima cosa che mi hai consigliato.
    inoltre volevo quindi chiedere come potevo fare per visualizzare il calcolo due se ho scelto di inserire il dato b, e visualizzare il calcolo tre se scelgo di inserire il dato b1, entrambi devono avere quei limiti.

    qualsiasi tipo di consiglio è acettato, anche cambiare tutta la funzione.
    grazie milleeeeeee!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    if(parseInt(b)> 0){
    //calcolo 2
    }else if(parseInt(b1)>0){
    //calcolo 3
    }

    se non conosciamo nemmeno gli if...

  9. #9
    ok grazie milleeeeeeeeeeeeeeeee!! sono riuscito..
    posto se magari possa mai servire a qualcuno.

    la funzione corretta:
    function funzione(){
    fh=document.forms[0];
    a = fh.datoa.value;
    b = document.getElementById("datob").options[document.getElementById("datob").selectedIndex].value * 150;
    b1 = document.getElementById("datob1").options[document.getElementById("datob1").selectedIndex].value;
    c = fh.datoc.value;
    due = a * b * c / 5000;
    tre = a * b1 * c / 5000;
    if(parseInt(b)> 0){fh.output2.value=due
    //calcolo 2
    }else if(parseInt(b1)>0){fh.output2.value=tre
    //calcolo 3
    }if(fh.output2.value <= 20) {fh.output2.value = 18;
    }else if(fh.output2.value <= 32) {fh.output2.value = 28;
    }else if(fh.output2.value <= 42) {fh.output2.value = 40;
    }else if(fh.output2.value <= 54) {fh.output2.value = 50;
    }else if(fh.output2.value <= 70) {fh.output2.value = 65;
    }else if(fh.output2.value <= 90) {fh.output2.value = 85;
    }else if(fh.output2.value <= 105) {fh.output2.value = 100;
    }else if(fh.output2.value <= 130) {fh.output2.value = 120;
    }else if(fh.output2.value <= 160) {fh.output2.value = 150;
    }else if(fh.output2.value <= 190) {fh.output2.value = 180;
    }else if(fh.output2.value >= 190) {alert("Richiedici un preventivo email: servizioclienti@depurweb.it");
    }
    }

    ciao a tutti ragazzi!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.