IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Erreur de selection avec Javascript


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 13
    Points : 18
    Points
    18
    Par défaut Erreur de selection avec Javascript
    Bonsoir à tous. Je me tourne vers vous pour un problème assez étrange que j'ai du mal à comprendre. je crée un petit jeu sur navigateur et dans mon code (à certains endroit du code) lorsque je sélectionne un élément par son id (élément que j'ai crée) ça ne marche pas et lorsque j'affiche en console j'ai un beau "null" je ne vous dis pas combien j'en suis exaspéré tellement j'ai passé du temps dessus alors que le plus dure reste à gérer.

    je met un extrait de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
        function CreateEnnemies() {
            var ennemie = document.createElement('img');
            ennemie.src = 'images/ennemie.png';
            ennemie.id = 'ennemie';
            ennemie.style.width = '80px';
            ennemie.style.height = '40px';
            ennemie.style.position = 'absolute';
            ennemie.style.left = Math.round(Math.random() * 260) + 'px'; // Les ennemies apparaitrons aléatoirement sur l'espace de jeu
            // 265 représente la taille de l'écran moins la taille d'un ennemie. Ainsi ils n'apparaitrons pas en dehors de l'écran
            conteneur.appendChild(ennemie);
            // console.log(parseInt(getComputedStyle(conteneur).width));
        }
     
        ct2 = 0;
        setInterval(() => {
            CreateEnnemies();
     
            ct2++;
            if (ct2 == 1) {
                var deleteEnnemies = $('#ennemie');
                $.each(deleteEnnemies, function(index, elt) {
                    if (parseInt($(this).css('top')) == 600) {
                        $(this).remove();
                    }
                });
                ct2 = 0;
            }
        }, 2200);
     
     
        // Détection des collisions balles-ennemies
        var bal = document.querySelector('.container #ball');
     
        function collisionsBallesEnnemies() {
            var deleteEnnemies = $('#ennemie');
            console.log(deleteEnnemies);
     
            console.log(document.getElementById('#ball'));
     
        }
     
        collisionsBallesEnnemies()<br><br>
    Je crée un élement (une image) avec un idée ennemie. Mais ce que je ne comprends pas c'est que dans le setInterval j'arrive à sélectionner l'élément mais dans la fonction collisionsBallesEnnemies ça ne marche pas que ce soit avec du js native ou du jQuery.

    En espérant que je trouverais solution je solicite de l'aide. Cordialement

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Bonjour,

    Cette ligne
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    ennemie.id = 'ennemie';
    suppose que tu ne crées qu'un seul élément "ennemi" (toutes les 2 secondes);
    Mais je ne comprends pas que tu le supprimes aussitôt...
    Quand tu appelles collisionsBallesEnnemies() (une seule fois au chargement...), l'élément n'a pas encore été créé.
    Evite aussi de définir 2 fois une variable deleteEnnemies dans un contexte différent.

    Bref, deux ou trois problèmes d'organisation;

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour et bienvenue sur DVP.

    Une ID doit être UNIQUE dans ta page, ce qui n'est pas le cas quand dans ta fonction de création tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var ennemie = document.createElement('img');
    ennemie.src = 'images/ennemie.png';
    ennemie.id = 'ennemie';
    Tous les éléments crées auront la même ID. Tu peux dans ce cas passer par une classe commune.


    Un autre point à souligner est que lorsque l'on utilise jQuery ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $.each(deleteEnnemies, function(index, elt) {
        if (parseInt($(this).css('top')) == 600) {
            $(this).remove();
    alors on l'utilise en plein, ou pas du tout, autant prendre de bonne habitude tout de suite.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 13
    Points : 18
    Points
    18
    Par défaut
    Bonsoir à tous. Merci pour les retours j'avais déjà résolu mon problème et oui effectivement je dois plutôt créé des éléments avec classe commune (il faut dire que la règle de l'id unique m'avais échappé). Dans tout les cas mon jeu avance tranquillou mis à part la détection des collisions qui m'en fait voir de toutes les couleurs (les éléments sont créé aléatoirement et le nombre est inconnu du coup difficile de gérer les collisions pour chaque balle avec chaque ennemis)... Quoiqu'il en soit merci pour les retours ça fait plaisir

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 13
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par javatwister
    (...)
    Mais je ne comprends pas que tu le supprimes aussitôt...
    Alors pour répondre à ta question en fait c'est un jeu de vaisseau spatial que je crée et les vaisseaux ennemis circule vers le bas jusqu'à disparaître de l'écran et je retire les vaisseaux ennemis qui sont sortis du cadre du jeu pour qu'il ne s'accumule pas en bas de l'écran (au bout d'un moment ça fera beaucoup).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur ouverture page avec javascript:window.open
    Par gagouk dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2016, 15h09
  2. erreur javascript pour modifier select avec tableau PHP
    Par omdafer dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 24/03/2008, 12h27
  3. Désactiver plusieurs SELECT avec javascript
    Par Agité dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 12/10/2007, 17h00
  4. CSS par dessus des Select avec script javascript.
    Par Joe Le Mort dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/01/2007, 13h56
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo