JavaScript ne fonctionne pas dans un widget Elementor

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
normancrowley
Messages : 1
Enregistré le : 04 déc. 2024, 04:25

JavaScript ne fonctionne pas dans un widget Elementor

Message par normancrowley » 04 déc. 2024, 04:28

Bonjour

J'ai créé un javascript pour afficher une liste de fichiers PDF filtrés par un SELECT (année).

Cela fonctionne très bien sur une page HTML, mais lorsque j'intègre ce script dans un widget HTML Elementor cela ne fonctionne plus.

Il n'y a pas de message d'erreur dans la console, mais la modification du SELECT ne change pas la classe des éléments <div class="pdf-item">.

Voici le HTML et le script :

Code : Tout sélectionner

<style>
    .pdf-item { display: none; }
    .pdf-item.visible { display: block; }
</style>
<select id="yearFilter">
    <option value="">Tous les ans</option>
    <option value="2022">2022</option>
    <option value="2023">2023</option>
</select>

<div id="pdfList">
    <div class="pdf-item" data-year="2022">Document 1</div>
    <div class="pdf-item" data-year="2023">Document 2</div>
    <div class="pdf-item" data-year="2022">Document 3</div>
</div>

<script>
    document.addEventListener('DOMContentLoaded', function () {
        const yearFilter = document.getElementById('yearFilter');
        const pdfList = document.getElementById('pdfList');

        console.log('DOM fully loaded and parsed');

        if (yearFilter) {
            console.log('yearfilter existe');
            yearFilter.addEventListener('change', function () {
               debugger; // Ajoutez cette ligne avant l'événement change pour activer le débogage
                console.log('Change event triggered');
                const selectedYear = this.value;
                console.log('Selected Year:', selectedYear);

                pdfList.querySelectorAll('.pdf-item').forEach(item => {
                    const itemYear = item.dataset.year;
                    console.log('Item Year:', itemYear);

                    if (!selectedYear || itemYear === selectedYear) {
                        console.log('Adding visible class to:', item);
                        item.classList.add('visible');
                    } else {
                        console.log('Removing visible class from:', item);
                        item.classList.remove('visible');
                    }
                    console.log('Current classes for item:', item.className);
                });
            });
        } else {
            console.log('Year filter element not found');
        }
    });
</script>

ornatebroke
Messages : 1
Enregistré le : 09 déc. 2024, 11:14
Contact :

Re: JavaScript ne fonctionne pas dans un widget Elementor

Message par ornatebroke » 09 déc. 2024, 11:18

While the code worked fine on a regular HTML page, when embedded in Elementor, changing the selection in the dropdown did not change the class of the <div class="pdf-item"> elements. No error messages appeared in the console, but events were not firing as expected. The HTML and JavaScript code were provided, including a dropdown for year selection and a list of PDFs with a data-year attribute. To fix this, it may be necessary to ensure that the JavaScript code runs after the Elementor content has loaded, check for conflicts with other scripts, or use jQuery to improve compatibility.

stickmanhook21
Messages : 1
Enregistré le : 06 mai 2025, 11:29

Re: JavaScript ne fonctionne pas dans un widget Elementor

Message par stickmanhook21 » 06 mai 2025, 11:34

Bonjour normancrowley,

Il est possible qu'Elementor charge les contenus de manière asynchrone, ce qui empêche votre script de fonctionner correctement. Essayez ces solutions :

Utilisez window.onload ou jQuery(document).ready() pour vous assurer que le DOM est complètement chargé avant d’exécuter le script.

Vérifiez s’il y a des conflits avec d'autres plugins ou scripts. Stickman Hook Désactivez-les temporairement pour tester.

Essayez d’ajouter un léger délai avec setTimeout pour donner plus de temps à Elementor avant d’exécuter le script.

J'espère que cela vous aidera à résoudre le problème !

Cordialement,
[Stickman Hook]

sleepstew
Messages : 1
Enregistré le : 13 mai 2025, 10:47

Re: JavaScript ne fonctionne pas dans un widget Elementor

Message par sleepstew » 13 mai 2025, 10:49

Elementor retarde ou recharge parfois le contenu à l'aide d'AJAX, ce qui fait que le JavaScript que vous insérez dans les widgets HTML ne fonctionne pas comme prévu. Vous devez vous assurer que le code JavaScript est exécuté après le chargement complet du DOM, une fois que tous les éléments pdf-item existent. Si vous utilisez des modèles AJAX ou Elementor, utilisez les hooks Elementor.
scratch games delight players with a variety of creative games from Scratch.

homedual
Messages : 1
Enregistré le : Hier, 05:00
Contact :

Re: JavaScript ne fonctionne pas dans un widget Elementor

Message par homedual » Hier, 05:02

Ouvrez les outils de développement (F12) et consultez l'onglet Console pour détecter d'éventuelles erreurs JavaScript. Cela peut indiquer un problème spécifique, comme un script mal chargé ou une dépendance manquante.

Répondre