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

    Funzione con nome della proprietà variabile

    ciao a tutti, scusate ma sono poco esperto di javascript
    ho questa pagina con questa funzioncina che funziona perfettamente :
    Codice PHP:
    <head>
    <script language="javascript">
    function calcolaricarico(sc,indice) {
    var costo = parseFloat(sc.form.COSTO_ARTICOLO.value);
    var prezzo = parseFloat(sc.value);
    sc.form.RICARICO_ARTICOLO.value = Math.round(((prezzo-costo)/costo)*100);
    }
    </script>
    </head>
    <?php
    echo "<form method=\"post\" action=\"destinazione.php\" name=\"listino\">";
    $costo=100;$prezzo=120;
    echo 
    "Costo <input type=\"text\" name=\"COSTO_ARTICOLO\" value=\"$costo\">";
    echo 
    "Prezzo <input type=\"text\" name=\"PREZZO_ARTICOLO\" value=\"$prezzo\" onchange=\"calcolaricarico(this);\">";
    echo 
    "Ricarico <input type=\"text\" name=\"RICARICO_ARTICOLO\" value=\"\">

    "
    ;
    echo 
    "</form>";
    ?>
    Siccome però i dati contenuti nel form sono il risultato di una interrogazione di database la reale parte in php è la seguente:
    Codice PHP:
    <?php
    echo "<form method=\"post\" action=\"destinazione.php\" name=\"listino\">";
    $query="SELECT * FROM listini";
    $result=mysql_query ($query);
    while (
    $riga=mysql_fetch_array($result)) {
        
    $indice $riga[indice];
        
    $costo $riga[costo];
        
    $prezzo $riga[prezzo];
        echo 
    "Costo <input type=\"text\" name=\"COSTO_ARTICOLO[$indice]\" value=\"$costo\">";
        echo 
    "Prezzo <input type=\"text\" name=\"PREZZO_ARTICOLO[$indice]\" value=\"$prezzo\" onchange=\"calcolaricarico(this,".$indice.");\">";
        echo 
    "Ricarico <input type=\"text\" name=\"RICARICO_ARTICOLO[$indice]\" value=\"\">

    "
    ;
    }
    echo 
    "</form>";
    ?>
    Il problema è che non so come assegnare il giusto nome alle proprietà COSTO_ARTICOLO e RICARICA_ARTICOLO che nel form ora sono degli array. Son riuscto a passare alla funzione il valore della var indice ed ho già verificato che funziona. lo script ora come ora mi restituisce l'errore sc.form.COSTO_ARTICOLO has no properties

    Grazie in anticipo per le risposte, APSoft

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova cosi:
    codice:
    <head>
    <script language="javascript">
    function calcolaricarico(sc,indice) {
    var costo = parseFloat(document.listino.COSTO_ARTICOLO.value);
    var prezzo = parseFloat(sc.value);
    document.listino.RICARICO_ARTICOLO.value = Math.round(((prezzo-costo)/costo)*100);
    }
    </script>
    Ti consiglio l'ottima guida che trovi http://javascript.html.it (guida base) fai errori di sintassi.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    si, lo so scusatemi,
    problema rimane ora mi restituisce :

    document.listino.COSTO_ARTICOLO has no properties

    scusa se dico fesserie, ma io penso che il problema sia che la proprietà name del tag input si chiama COSTO_ARTICOLO[$indice] non COSTO_ARTICOLO, solo che non so come dirglielo alla funzione javascript

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Posta la pagina come la riceve il browser (senza php che non conosco) o metti un link pubblico.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    eccolo qui,

    <head>
    <script language="javascript">
    function calcolaricarico(sc,indice) {
    var costo = parseFloat(sc.form.COSTO_ARTICOLO.value);
    var prezzo = parseFloat(sc.value);
    sc.form.RICARICO_ARTICOLO.value = Math.round(((prezzo-costo)/costo)*100);
    }
    </script>
    </head>
    <form method="post" action="destinazione.php" name="listino">
    Costo <input type="text" name="COSTO_ARTICOLO[1]" value="100">
    Prezzo <input type="text" name="PREZZO_ARTICOLO[1]" value="120" onchange="calcolaricarico(this,1);">
    Ricarico <input type="text" name="RICARICO_ARTICOLO[1]" value="">



    Costo <input type="text" name="COSTO_ARTICOLO[2]" value="90">
    Prezzo <input type="text" name="PREZZO_ARTICOLO[2]" value="150" onchange="calcolaricarico(this,2);">
    Ricarico <input type="text" name="RICARICO_ARTICOLO[2]" value="">


    </form>
    ho provato un aocsa del tipo
    var costo = parseFloat(sc.form.COSTO_ARTICOLO[1].value);
    ma mi da lo stesso errore

  6. #6
    trovato!, la pausa pranzo ha portato consiglio

    <script language="javascript">
    function calcolaricarico(sc,indice) {
    var nome_var_costo = 'COSTO_ARTICOLO['+indice+']';
    var nome_var_ricarico = 'RICARICO_ARTICOLO['+indice+']';
    var costo = parseFloat(document.listino[nome_var_costo].value);
    var prezzo = parseFloat(sc.value);
    document.listino[nome_var_ricarico].value = Math.round(((prezzo-costo)/costo)*100);
    }

    ciaooooooooooo

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.