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 :

Affichage d'objets dans une même DIV


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Points : 78
    Points
    78
    Par défaut Affichage d'objets dans une même DIV
    Bonjour;

    Voila j 'ai récupéré mon tableau, j'ai 5 produits à l'intérieur du tableau (nom , description, prix et un bouton pour renvoyer vers la page produit). J'ai créer dans HTML 5 div pour les placer seulement tous mes produits sont dans la même div du coup impossible de les placés avec mon css. Ce que je souhaite c'est la photo puis en dessous le titre de l'objet, en dessous sa description et pour finir le prix.(voilà l'ordre des éléments) Si quelqu'un un peut m'aider se serait sympa.
    Merci par avance.

    Code html : 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
    43
    44
    <!DOCTYPE html>
    <html lang="fr">
    	<head>
    		<meta charset="UTF-8">
    		<meta name="robots" content="index, follow">
    		<meta name="description" content="La boutique Orinoco vends des appareils photos de qualité à prix très abordable">
    		<meta name="viewport" content="width=device-width, initial-scale=1.0">
    		<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@100&display=swap" rel="stylesheet">
    		<link href="https://fonts.googleapis.com/css2?family=Finger+Paint&display=swap" rel="stylesheet">
    		<link rel="stylesheet" type="text/css" href="style.css">
    		<script src="https://kit.fontawesome.com/cf7cad016f.js" crossorigin="anonymous"></script>
    		<title>Orinoco -Accueil</title>
    	</head>
    	<body>
    		<header>
    			<img class="header__logo" src="images/logo.png" alt="logo Orinoco">
    			<h1 class="header__h1">Bienvenue sur Orinoco</h1>
    			<ul class="header__validation">
    				<li><a class="header__validation_commande" href="confirmation_de_commande.html"></i>Commandes</a></li>
    				<li><a class="header__validation_panier" href="panier.html"><i class="fas fa-shopping-cart"></i>&nbsp; Panier</a></li>
    			</ul>
    		</header>
    		<main>
    			<h2 class="main_h2">Trouvez votre appareil photo vintage</h2>
    			<p class="main__text">
    				Qui dit photographie dit forcément appareil photo... La gamme de produits présente sur le marché est vaste et 
    				propose de nombreuses références.
    				Chez Orinoco, vous obtiendrez des modèles à la pointe de la technologie.
    			</p>
    			<section id="produit">
    				<div class="cameras"></div>
    				<div class="cameras"></div>
    				<div class="cameras"></div>
    				<div class="cameras"></div>
    				<div class="cameras"></div>
    			</section>
    		</main>
    		<footer>
    			<a class="text" href="#">À propose de nous</a>
    			<a class="text" href="#">Contactez-nous</a>
    		</footer>		
    		<script src="essai.js"></script>
    	</body>
    </html>

    mon code Javascript :
    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
    43
    //section de mes divs
    document.getElementsByClassName("cameras")
     
    //requête
    fetch('http://localhost:3000/api/cameras')
      .then(function(response){
        return response.json()
      }).then (function (data) {
        console.log(data)
        for(let i = 0; i <data.length; i++){
     
          //création de ma balise image
          let images = document.createElement("img");
          images.classList.add("images")
          images.textContent = data[i].imageUrl ;
          images.setAttribute('src', data[i].imageUrl);
          document.querySelector("div").appendChild(images);
     
          //création de mon nom de l'article
          let names = document.createElement("H2");
          names.textContent = data[i].name;
          document.querySelector("div").appendChild(names);
     
          //création de mon paragraphe: description
          let description = document.createElement("p");
          description.textContent = data[i].description;
          document.querySelector("div").appendChild(description);
     
     
     
          //création de l'emplacement prix
          let price = document.createElement("p");
          price.textContent = data[i].price/100 + "€";
          document.querySelector("div").appendChild(price);
     
          //création de mon bouton
          let button = document.createElement("div");
          button.classList.add("button_detail");
          button.innerHTML = `<a href=produit.html?id=${data._id}><button class="button_detail" type="button">Détails</button></a>`;
          document.querySelector("div").appendChild(button);
     
        }
      })

  2. #2
    Membre à l'essai
    Homme Profil pro
    Technicien Industrialisation
    Inscrit en
    Avril 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Industrialisation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Salut,

    Je débute en javascript mais à première vue c'est ton : document.querySelector("div") qui ne va pas pour ce que tu as besoin de faire.

    En effet il va aller chercher le premier objet qu'il trouve. Donc peut importe où tu es dans ta boucle il va toujours trouver la première div.

    A ta place pour ce code simple j’enlèverai les div class='cameras' du HTML et je les créerais directement dans ta boucle javascript.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    boucle{
    const divCamera = createElement('div')
    classList.add('camera')
    const XXX
    const YYY
    const ZZZ
     
    divCamera.appendChild(XXX)
    divCamera.appendChild(YYY)
    divCamera.appendChild(ZZZ)
    ou
    divCamera.append(XXX,YYY,ZZZ)
    }

  3. #3
    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
    Mettons qu'il n'y ait pas d'erreur ailleurs, ajoute simplement l'indice de la collection à chaque fois que tu fais un append:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.querySelector("div")[i].appendChild(images);

    etc.

  4. #4
    Membre régulier
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Points : 78
    Points
    78
    Par défaut
    Merci a vous deux pour votre réponse, cependant j'ai essayé la façon dont que vous m'avez indiquer mais cela n'a pas fonctionner. J'ai trouvé un autre moyen et sa fonctionne

    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
    document.getElementById("produit");
    let cameras = document.getElementsByClassName("cameras");
     
    //requête
    fetch('http://localhost:3000/api/cameras') 
      .then(function(response){
        return response.json()
      }).then (function (data) {
        console.log(data)
        for(let i = 0; i <data.length; i++){
          cameras[i].innerHTML = `<img class=images + src="${data[i].imageUrl}" alt="caméras"/><figcaption id="text_produit"><h2>${data[i].name}</h2><p class="description"> Description: ${data[i].description}</p><p id="price"> Prix: ${data[i].price/100}€</p><a href="produit.html?_id=${data[i]._id} class="liens"><button>Aperçu</button></a></figcaption>`
          cameras[i].setAttribute("data-id", data[i]._id)
     
     
        }        
    })
    .catch(function(err) {
        console.log('Fetch Error ', error);
    });

  5. #5
    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
    Oui voilà!
    Tu pouvais aussi utiliser le sélecteur document.querySelectorAll(".cameras");

  6. #6
    Membre régulier
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Points : 78
    Points
    78
    Par défaut
    Oui c'est vrai. merci pour les conseils.

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

Discussions similaires

  1. [XL-2007] Problème avec des objets dans la bibliothèque d'un projet VBA
    Par Danny.adh1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2015, 11h47
  2. Problème affichage des caractères dans ma table
    Par Aenur56 dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/06/2012, 15h16
  3. Problème affichage attribut objet dans JSP
    Par rodney733 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/01/2012, 15h14
  4. [DIV] [FireFox] Problème affichage du contenu dans un div
    Par jibouze dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 24/11/2005, 11h06
  5. Réponses: 1
    Dernier message: 06/03/2003, 11h57

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