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

    funzione che va solo la prima volta

    salve,
    in un form di ordinazione prodotto.. in questa pagina faccio vedere l'elenco e faccio scegliere la modalità pagamento.
    select pagamento
    -> contrassegno aggiungo la spesa del contrassegno e ricalcolo il totale
    ->bonifico nascondo e rimuovo la spesa del contrassegno e ricalcolo
    ->carta idem
    ->rimessa diretta.. setto a zero le spese di spedizione
    ora siccome mi devo ricordare qst spese spedizione le salvo in due campi hidden spese e speseold
    se seleziono qls option mi calcola tutto bene, se la cambio non fa nulla e firefox mi restituisce:
    TypeError: document.getElementById(...) is null
    nella riga:
    document.getElementById('spese').value = document.getElementById('speseold').value;
    codice:
    <body>
        <form name="modulo" action="ordine4_ins.php?risp=1" method="post"  class="pure-form">
    Cliente:&nbsp;<SELECT id="anagrafica" name="anagrafica" >
    <OPTION VALUE="0">Sel. Cliente</OPTION>
    <optgroup label="B"  >
    <OPTION value="56" >BAdheheh</OPTION>
    </optgroup><optgroup label="C"  >
    <OPTION value="55" >Chdhgd</OPTION>
    <OPTION value="51" >Cshhdsdh</OPTION>
    </optgroup></select>
    Modalita' Pagamento:&nbsp;&nbsp;       <!-- onchange aggiunge spese di spedizione -->
    <select size="1" name="pagamento" id="pagamento" onchange="vis_contrassegno(this.value)">
       <option value="0">Seleziona -></option>
         <option value="contrassegno">Contrassegno</option>
        <option value="bonifico">Bonifico Bancario</option>
      <option value="carta di credito">Carta di Credito</option>
      <option value="rimessa diretta">Rimessa Diretta</option>
    </select>
    <div id="banca" style="display: none;">Selezionare la Banca:<br><SELECT id="banche" name="banche" ><OPTION value="1" >Banca 1</OPTION><OPTION value="2" >banca 2</OPTION></select></div>
    <br> <br>
    <div class="tabella">
    <div class="riga">
            <div class="colonna1" style="height: 20px; line-height: 20px;" >Prodotto</div>
            <div class="colonnadescr" style="height: 20px; line-height: 20px;" >Descrizione</div>
            <div class="colonna2" style="height: 20px; line-height: 20px;" >Prezzo Uni.</div>
            <div class="colonna3" style="height: 20px; line-height: 20px;" >Quantita'</div>
            <div class="colonna4" style="height: 20px; line-height: 20px;" >Prezzo Totale</div>
    </div>
    
    <div class="riga" id="riga0" >
    <div class="colonna1">
    <input name="prodotti0" id="prodotti0" type="hidden" value="39" > <span title="Note Olf. Fiorite; Calde; Speziate EDP su Note di LA PETITE ROBE NOIRE ml.50" >08-6</span></div>
    <div class="colonnadescr" id="colonnadescr_id0" >
    Note Olf. Fiorite; Calde; Speziate EDP su Note di LA PETITE ROBE NOIRE ml.50</div>
    <div class="colonna2" id="colonna2_id0" >
    27.50 &euro;</div>
    <div class="colonna3">
    1<input name="qty0" id="qty0" type="hidden" size=3 value="1" >
    
    </div>
    <div class="colonna4" id="colonna4_id0" >
    27,50 &euro;</div>
    <input name="p_uni0" id="p_uni0" type="hidden" value="27.50"  >
    </div>
    <div class="riga" id="riga1" >
    <div class="colonna1">
    <input name="prodotti1" id="prodotti1" type="hidden" value="29" > <span title="Note Olf. Fresche; Agrumate; Marine EDP su Note di ABERCROMBIE ML.50" >18-57</span></div>
    <div class="colonnadescr" id="colonnadescr_id1" >
    Note Olf. Fresche; Agrumate; Marine EDP su Note di ABERCROMBIE ML.50</div>
    <div class="colonna2" id="colonna2_id1" >
    24.50 &euro;</div>
    <div class="colonna3">
    10<input name="qty1" id="qty1" type="hidden" size=3 value="10" >
    
    </div>
    <div class="colonna4" id="colonna4_id1" >
    245,00 &euro;</div>
    <input name="p_uni1" id="p_uni1" type="hidden" value="24.50"  >
    </div>
    <div class="riga"  >
    <div class="colonna1">
    </div>
    <div class="colonnadescr" >
    </div>
    <div class="colonna2" >
    </div>
    <div class="colonna3">
    Sub-Totale:
    </div>
    <div class="colonna4" id="colonna4tot" >
    272,50 &euro;<input name="sub_totale" id="sub_totale" type="hidden" value="272.5" >
    </div>
    </div>
    <div class="riga"  >
    <div class="colonna1">
    </div>
    <div class="colonnadescr" id="colonnadescr_bonus" >
    </div>
    <div class="colonna2" >
    13,00 &euro;<input name="prezzo_bonus" id="prezzo_bonus" type="hidden" value="13.00" >
    </div>
    <div class="colonna3">
    1</div>
    <div class="colonna4"  >
    13,00 &euro;</div>
    </div>
    <div class="riga"  >
    <div class="colonna1">
    </div>
    <div class="colonnadescr" >
    </div>
    <div class="colonna2" >
    </div>
    <div class="colonna3">
    Spedizioni:
    </div>
    <div class="colonna4" id="spese_id_col" >
    3,00 &euro;<input name="spese" id="spese" type="hidden" value="3.00" >
    <input name="speseold" id="speseold" type="hidden" value="3.00" >
    </div>
    </div>
    <div class="riga" id="contrassegno" style="display: none" >
    <div class="colonna1">
    </div>
    <div class="colonnadescr" >
    </div>
    <div class="colonna2" >
    </div>
    <div class="colonna3">
    Contrassegno:
    </div>
    <div class="colonna4"  >
    3,00 &euro;<input name="contrassegno_costo" id="contrassegno_costo" type="hidden" value="3.00" >
    </div>
    </div>
    <div class="riga"  >
    <div class="colonna1">
    </div>
    <div class="colonnadescr" >
    </div>
    <div class="colonna2" >
    </div>
    <div class="colonna3">
    Totale:
    </div>
    <div class="colonna4" id="colonna4totale" >
    288,50 &euro;</div>
    </div>
    </div>
    <input type="hidden" name="cont" id="cont" value="2" >
    <input type="hidden" name="bonus" id="bonus" value="1" >
    <input type="hidden" name="qty_tot" id="qty_tot" value="11" >
    <br>
    <input type="button" name="sub" value="Prosegui"  onClick="Modulo3()"  class="pure-button pure-button-primary">
    
    </form>
    </body>
    codice:
    function vis_contrassegno(paga) {
      alert (paga);
      
        switch (paga) {
        case 'contrassegno':
           document.getElementById('banca').style.display='none';
            document.getElementById('contrassegno').style.display = 'block';
     
       document.getElementById('spese').value = document.getElementById('speseold').value;
        spese = parseFloat(document.getElementById('spese').value);
        spese1 = spese.toFixed(2);
                                     spese2 =  spese1.replace('.', ',');
        document.getElementById('spese_id_col').innerHTML = spese2 + ' &euro;'; 
       totale_tot = parseFloat(document.getElementById('sub_totale').value);
       totale_tot += parseFloat(document.getElementById('prezzo_bonus').value);
                                      totale_tot += spese;
                                      
                                                        totale_tot += parseFloat(document.getElementById('contrassegno_costo').value);
                                       totale_tot1 = totale_tot.toFixed(2);
                                     totale_tot2 =  totale_tot1.replace('.', ',');
                                      document.getElementById('colonna4totale').innerHTML = totale_tot2 + ' &euro;';
            break;
        case 'bonifico':
          document.getElementById('banca').style.display='block';
           document.getElementById('contrassegno').style.display = 'none';
     totale_tot = parseFloat(document.getElementById('sub_totale').value);
       totale_tot += parseFloat(document.getElementById('prezzo_bonus').value);
       document.getElementById('spese').value = document.getElementById('speseold').value;
       alert('spese' + document.getElementById('spese').value);
       alert('speseold' + document.getElementById('speseold').value);
        spese = parseFloat(document.getElementById('spese').value);
        spese1 = spese.toFixed(2);
                                     spese2 =  spese1.replace('.', ',');
        document.getElementById('spese_id_col').innerHTML = spese2 + ' &euro;'; 
                                      totale_tot += spese;
                                                                         totale_tot1 = totale_tot.toFixed(2);
                                     totale_tot2 =  totale_tot1.replace('.', ',');
                                      document.getElementById('colonna4totale').innerHTML = totale_tot2 + ' &euro;';
            break;
        case 'carta di credito':
          document.getElementById('banca').style.display='none';
            document.getElementById('contrassegno').style.display = 'none';
     totale_tot = parseFloat(document.getElementById('sub_totale').value);
       totale_tot += parseFloat(document.getElementById('prezzo_bonus').value);
       
        document.getElementById('spese').value = document.getElementById('speseold').value;
        spese = parseFloat(document.getElementById('spese').value);
        spese1 = spese.toFixed(2);
                                     spese2 =  spese1.replace('.', ',');
        document.getElementById('spese_id_col').innerHTML = spese2 + ' &euro;';
        
        
                                      totale_tot += spese;
                                                                         totale_tot1 = totale_tot.toFixed(2);
                                     totale_tot2 =  totale_tot1.replace('.', ',');
                                      document.getElementById('colonna4totale').innerHTML = totale_tot2 + ' &euro;';
            break;
        case 'rimessa diretta':
          document.getElementById('banca').style.display='none';
          document.getElementById('contrassegno').style.display = 'none';
            totale_tot = parseFloat(document.getElementById('sub_totale').value);
       totale_tot += parseFloat(document.getElementById('prezzo_bonus').value);
       document.getElementById('spese').value == '0';
                                      
                           document.getElementById('spese_id_col').innerHTML = '0,00 &euro;';            
                                                        
                                       totale_tot1 = totale_tot.toFixed(2);
                                     totale_tot2 =  totale_tot1.replace('.', ',');
                                      document.getElementById('colonna4totale').innerHTML = totale_tot2 + ' &euro;';
            break;
        
    } 
     
                      }

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quando da quell'errore o richiami l'elemento troppo presto al caricamento pagina (onload) e ancora non esiste, oppure manca proprio effettivamente.
    Il codice è complesso e dispersivo prova a mettere la pagina demo online e riporta qui il link forse si capisce meglio.

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, ho dato giusto uno sguardo veloce. Pare che tu vada in qualche modo ad eliminare quegli elementi. Infatti stanno dentro il div "spese_id_col", e in diversi punti della funzione c'è una riga simile:
    codice:
    document.getElementById('spese_id_col').innerHTML = spese2 + ' &euro;';
    Chiaramente questo va a sovrascrivere tutto il contenuto del div in questione, eliminando quindi gli elementi hidden.





    PS: Un consiglio. Il tuo script è largamente ridondante. Potrebbe essere ottimizzato usando opportunamente qualche variabile. Ad esempio per "memorizzare" momentaneamente dei dati, anziché usare dei campi hidden. O anche per creare degli alias dei vari elementi, anziché usare ripetutamente getElementById.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    grazie KillerWorm... l'errore era proprio quello... spostando i campi hidden... funziona tutto.

    ps. lo so che rindondante... ma è uno software che devo "aggiornare" di altri...

    grazie ancora

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.