Placement du JS

Fermé
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024 - Modifié le 12 août 2017 à 12:02
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 12 août 2017 à 12:39
Chers confères,
Mais connaissance en JS sont NULL, je demande votre indulgence.
Je sais que idéalement les fonctions JS doivent être placées dans le head de la page entre les balises
<script type="text/javascript">
</script>

J'ai trouvé une fonction très pratiques pour mettre à jour un prix en cliquant sur un input de type number. Si je place ma fonction dans le head, elle ne fonctionne pas. Pour qu'elle marche je dois la place dans le body après ma div ou à la fin de la page après le </body>
Pourquoi ne fonctionne n'est elle pas dans le head, comment faire pour que ça marche
la voici

function getElementsByAttribute(attribute, name)
{
    var matchingElements = [];
    var allElements = document.getElementsByTagName('*');
    for (var i = 0; i < allElements.length; i++)
        {
        if (allElements[i].getAttribute(attribute)===name)
        {
            matchingElements.push(allElements[i]);
        }
    }
    return matchingElements;
}

//fonction de mise à jour du total
function updateTotal() {
    var total = 0,
        tempEl, quantity, unitPrice, i, elemNumber;
 
    for(i = 1, elemNumber = document.getElementsByClassName("place").length; i <= elemNumber; i++) {   
        tempEl = getElementsByAttribute("name","item_number_"+i)[0];
        quantity = tempEl.value;
        tempEl = getElementsByAttribute("name","amount_"+i)[0];
        unitPrice = tempEl.value;
         
        total += quantity*unitPrice;
    }
     
    tempEl = document.getElementById("total");
    tempEl.innerHTML = "<p>Total: $"+total+"</p>"
};
 
var tempEl, i, elemNumber;
 
for(i = 1, elemNumber = document.getElementsByClassName("place").length; i <= elemNumber; i++) {   
    tempEl = getElementsByAttribute("name","item_number_"+i)[0];
    tempEl.addEventListener("change", updateTotal, false);
}


merci de votre aide



Bien PHPment et MySQLment
Delaville

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 août 2017 à 12:39
Bonjour

En fait non... idealement le js est placé juste avant le </body>
0