Partage
  • Partager sur Facebook
  • Partager sur Twitter

Activité "Apprenez à coder avec JS"

Sujet résolu
21 janvier 2020 à 20:42:23

Bonjour, 

J'ai suivi le cours "Apprenez à coder avec JavaScript", tout s'est bien passé, et je suis arrivé à l'activité finale qui demande : 

(J'explique le souci après)

==== Début des consignes ====

Suite à votre travail sur le site de streaming, on vous demande de créer une app appeléeRestfulReading, qui permettra aux utilisateurs de suivre les livres qu'ils sont en train de lire/qu'ils ont lus.

Votre tâche est de créer la classe Book (Livre) et de peupler la base de données de développement de trois ou quatre livres pour vous assurer que l'interface fonctionne correctement (vous travaillerez avec le fichier Book.js).

La classe Book doit contenir les champs suivants :

  • title - string - le titre du livre
  • author - string - l'auteur du livre
  • description - string - une description du livre
  • pages - number - le nombre total de pages
  • currentPage - number - la page où se trouve l'utilisateur actuellement (entre 1 et pages)
  • read - boolean - si l'utilisateur a lu ou non le livre (par défaut: false)

La classe Book doit aussi contenir la méthode instance suivante :

  • readBook(page)
    • permet à l'utilisateur de dire à quelle page il se trouve actuellement
    • si l'argument page est inférieur à un ou supérieur au nombre total de pages du livre, readBook retourne 0
    • si l'argument page est supérieur ou égal à 1 et inférieur au nombre total de pages du livre, readBook modifie le champ currentPage de l'instance pour être égal à la valeur de l'argument passé, et retourne 1
    • si l'argument page est égal au nombre total de pages du livre, readBook modifie le champ currentPage de l'instance pour être égal à la valeur de l'argument passé, modifie le champ read de l'instance en true, et retourne 1

Quand vous aurez créé la classe Book, vous en créerez au moins trois instances valables et vous les mettrez dans le tableau books qui est exporté par Book.js. Pour vérifier votre travail, actualisez le navigateur intégré : vos instances Book devraient être visibles dans le carousel de l'interface RestfulReading.

Pour tester votre méthode instance readBook, suivez ces instructions pour trois livres (sans rafraîchir la page) :

  • mettez à jour la page actuelle avec une page valable qui est inférieure au nombre total de pages
  • mettez à jour la page actuelle avec exactement le nombre de pages total du livre (le livre devrait disparaître du carousel et apparaître dans la liste "Lus")

Quand vous aurez accompli ces tâches, votre navigateur devrait afficher une alerte qui contient un mot. Ce mot est la réponse à la seule question dans ce quiz !

==== Fin des consignes ====

Tout marche sauf l'alerte du navigateur me donnant le mot de la fin .. et je ne vois pas ce qu'il manque à mon code pour que tout soit validé ! Après pas mal de temps a tourner en rond j'en viens donc à demander de l'aide, ou si quelqu'un à le même problème.

Mon code:

export class Book {
  
  constructor(title, author, description, pages, currentPage, read = false) {
    this.title = title;
    this.author = author;
    this.description = description;
    this.pages = pages;
    this.currentPage = currentPage;
  }
  
  readBook(page) {
    if(page < 1 || page > this.pages) {
      return 0;
    } else if(page >= 1 && page < this.pages) {
      this.currentPage = page;
      return 1;
    } else if(page === this.pages) {
      this.currentPage = page;
      this.read = true;
      return 1;
    }
  }
  
  
}

let premierLivre = new Book("Le Début", "Kévin", "C'est le début", 1990, 30);
let deuxiemeLivre = new Book("Le Milieu", "Adrien", "C'est le milieu", 1996, 1996);
let troisiemeLivre = new Book("La fin", "Evann", "C'est la fin", 2003, 0)
  
export const books = [premierLivre, deuxiemeLivre, troisiemeLivre];



  • Partager sur Facebook
  • Partager sur Twitter

Pas de cerveau, pas de migraine.

22 janvier 2020 à 8:58:09

Bonjour,

Il te manque un point_virgule ligne 29. Je ne pense pas que ce soit la solution mais sait on ne jamais ;) 

Cordialement

  • Partager sur Facebook
  • Partager sur Twitter
22 janvier 2020 à 19:01:31

Bonjour Corvi113,

A première vue cela semble ok sauf que

dans le constructor tu as oublié

this.read = read;

Je viens de le tester, cela fonctionne

Suis bien les consignes pour chaque livre  :

  • mettez à jour la page actuelle avec une page valable qui est inférieure au nombre total de pages
  • mettez à jour la page actuelle avec exactement le nombre de pages total du livre (le livre devrait disparaître du carousel et apparaître dans la liste "Lus")

-
Edité par AliasDmc 22 janvier 2020 à 19:19:25

  • Partager sur Facebook
  • Partager sur Twitter
Découvrez les Css avec la zonecss.fr
22 janvier 2020 à 22:54:37

Merci beaucoup ! 

Effectivement malgré les deux petits oublie le code marchait mais je n'avais pas compris qu'il fallait faire la manip' pour chaque livre.. tout ça pour une consigne mal lu ! 

  • Partager sur Facebook
  • Partager sur Twitter

Pas de cerveau, pas de migraine.

21 juillet 2020 à 23:16:34

AliasDmc a écrit:

Bonjour Corvi113,

A première vue cela semble ok sauf que

dans le constructor tu as oublié

this.read = read;

Je viens de le tester, cela fonctionne

Suis bien les consignes pour chaque livre  :

  • mettez à jour la page actuelle avec une page valable qui est inférieure au nombre total de pages
  • mettez à jour la page actuelle avec exactement le nombre de pages total du livre (le livre devrait disparaître du carousel et apparaître dans la liste "Lus")

-
Edité par AliasDmc 22 janvier 2020 à 19:19:25

Bonsoir AliasDmc,

je tiens à vous remercier énormément pour vos conseils.

Bonne soirée



  • Partager sur Facebook
  • Partager sur Twitter
3 novembre 2020 à 16:32:00

Bonsoir, je suis également bloqué sur les deux dernières consignes, donc je n'ai pas accès à la boite de dialogue qui donne le mot... Pour être honnête, je ne les comprends pas du tout :

Pour tester votre méthode instance readBook, suivez ces instructions pour trois livres (sans rafraîchir la page) :

  • mettez à jour la page actuelle avec une page valable qui est inférieure au nombre total de pages
  • mettez à jour la page actuelle avec exactement le nombre de pages total du livre (le livre devrait disparaître du carousel et apparaître dans la liste "Lus")

Je ne sais pas à quoi correspond "page actuelle". Ça peut paraître très très bête comme erreur, mais je suis bloqué dessus... Est-ce localhost:8080 ?

Si oui, mon bouton update ne fonctionne pas quand je met un chiffre inférieur au nombre de page.

Voici ma manière de procéder :

1. je rafraichis le navigateur embarqué

2. je met un chiffre en dessus de 150 pour le premier livre (voir dans mon code)

3. je clique sur update (rien ne se passe)

4. je clique sur la petite flèche à droite pour passer au livre suivant.

5. sur le livre suivant je mets le même nombre de page que le nombre total du livre

6. je répète l'étape 5 pour les autres livres.

Vraiment désolé de déranger pour une erreur pareille, d'autan plus que ça doit venir de ma compréhension de la consigne.

export class Book { 
  constructor(title, author, description, pages, currentPage, read){ 
    this.title = title; 
    this.author = author; 
    this.description = description;
    this.pages = pages; 
    this.currentPage = currentPage; 
    this.read = read; 
   }

   readBook(page) { 
     if(page < 1 || page > this.pages) { 
       return 0; 
     }else if (page >= 1 && page < this.pages){ 
       this.currentPage = Page;
       return true;
     }else if (page === this.pages){ 
       this.currentPage = page; 
       this.read = true; 
       return true; 
       } 
    } 
  } 
         const book1 = new Book("Title1", "author1", "description1", 150, 0, false); 
         const book2 = new Book("Title2", "author2", "description2", 180, 0, false); 
         const book3 = new Book("Title3", "author3", "description3", 200, 0, false); 
         const book4 = new Book("Title4", "author4", "description4", 500, 0, false); 
         
         export const books = [book1, book2, book3];



  • Partager sur Facebook
  • Partager sur Twitter
19 décembre 2020 à 1:18:52

j'ai le meme soucis que toi, tu as pu trouver la solution?
  • Partager sur Facebook
  • Partager sur Twitter
24 décembre 2020 à 1:39:28

Salut à tous, suite aux nombreuses demandes sur le forum de la correction de cette exercice, j'ai fais une video sur YouTube expliquant sa résolution:

https://www.youtube.com/watch?v=TJCCMKRE-ss

Bon visionnage ;) !

  • Partager sur Facebook
  • Partager sur Twitter

La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]