Partage
  • Partager sur Facebook
  • Partager sur Twitter

Todolist push ne fonctionne pas, undefined

    11 juin 2022 à 15:18:04

    Bonjour.

    Je suis entrain de créer un projet personnel, un todolist en utilisant Vanilla JavaScript ES 6 mais j'ai de difficulté. J'aimerais pouvoir ajouter un article, tout fonctionne je peux ajouter mais le problème est que si je mets une valeur sur les inputs et je clique le bouton ajouter, l'article s'ajoute mais les textes qui sont dans mon div (qui s'ajoute) est écrit undefined partout, je ne comprends pas, cela fait 5 heures que je cherche non stop mais je n'arrive pas à trouver et aussi, si j'ajoute un produit il y a plusieurs div s'ajoutent d'un coup, j'aimerais que ca s'ajoute un par un.  La tech que j'utilise, vanilla JavaScript, scss, webpack et html



    Pouvez vous me débloquer s'il vous plait
    Voici mon github : https://github.com/Darkheadbanger/todolist_alone

    Voici mon todo.js

    const arrayText = [
      {
        textArticle: "Article",
        textDescription: "Description",
        textCategorie: "Activiter",
        textQuantity: 5,
        done: false,
        date: new Date(),
        edit: false,
      },
    ];
    
    // DOM
    const ul = document.querySelector("ul");
    const formAdd = document.querySelector("#formAdd");
    const inputArticle = document.querySelector("#input-article");
    const inputdescription = document.querySelector("#input-description");
    const inputCategorie = document.querySelector("#input-categorie");
    const inputQuantity = document.querySelector("#input-quantity");
    const addArticleError = document.querySelector(".add-article-error");
    const addCategorieError = document.querySelector(".add-categorie-error");
    const addquantityError = document.querySelector(".add-quantity-error");
    
    // Créer la classe todolist
    class Todo {
      constructor() {
        this.list = document.querySelector(".list-itmes");
        this.renderingTodo();
    
        // EventListener
        formAdd.addEventListener("submit", (event) => {
          event.preventDefault();
          this.updateToDo().bind(this); // Ou updateToDoList à voir
        });
    
        formAdd.addEventListener(
          "blur",
          (event) => {
            event.target.style.color = "white";
          },
          true
        );
    
        formAdd.addEventListener(
          "focus",
          (event) => {
            event.target;
          },
          true
        );
    
        formAdd.addEventListener(
          "click",
          (event) => {
            event.target;
          },
          true
        );
      }
    
      renderingTodo(
        inputArticleValue,
        inputDescriptionValue,
        inputCategorieValue,
        inputQuantityValue
      ) {
        this.list.innerHTML = "";
        arrayText.forEach((item, index) => {
          if (!item.edit) {
            this.createToDoElementDom(item, index);
            this.creerToDo(
              item,
              index,
              inputArticleValue,
              inputDescriptionValue,
              inputCategorieValue,
              inputQuantityValue
            );
          } else {
            this.editToDoElement(item, index);
          }
    
          this.toDoDone(item);
          this.list.appendChild(this.li);
        });
      }
    
      updateToDo() {
        const inputAddValue = [
          inputArticle.value,
          inputdescription.value,
          inputCategorie.value,
          inputQuantity.value,
        ];
    
        this.filledInputAddToZero(inputAddValue);
        this.errorInputAdd(inputAddValue);
        this.renderingTodo(
          inputAddValue[0],
          inputAddValue[1],
          inputAddValue[2],
          inputAddValue[3]
        );
      }
    
      filledInputAddToZero(inputAddValue) {
        if (inputAddValue) {
          inputArticle.value = "";
          inputdescription.value = "";
          inputCategorie.value = "";
          inputQuantity.value = "";
          addArticleError.classList.add("add-article-error");
          addCategorieError.classList.add("add-categorie-error");
          addquantityError.classList.add("add-quantity-error");
        }
      }
      errorInputAdd(inputAddValue) {
        if (
          inputAddValue[0] === "" &&
          inputAddValue[1] === "" &&
          inputAddValue[2] === "" &&
          inputAddValue[3] === ""
        ) {
          addArticleError.classList.remove("add-article-error");
          addCategorieError.classList.remove("add-categorie-error");
          addquantityError.classList.remove("add-quantity-error");
        }
      }
    
      createToDoElementDom(item) {
        this.li = document.createElement("li");
        this.li.classList.add("list");
        // const dates = item.date;
        // const date =
        //   ("0" + dates.getDate()).slice(-2) +
        //   "/" +
        //   ("0" + dates.getMonth()).slice(-2) +
        //   "/" +
        //   dates.getFullYear();
        // const heure = dates.getHours() + ":" + dates.getMinutes();
        // <div class="col ms-custom-date mt-custom-date">
        //   <p class="fw-bold card-title text-light h-custom-date">${date}</p>
        //   <p class="fw-bold card-title text-light ms-3">${heure}</p>
        // </div>;
    
        const html = `<div class="col mb-4 mt-5 pe-4">
        <div class="card card__element card--modifier rounded">
          <div
            class="card-header card-header__element card-header--modifier"
          >
            <div
              class="d-flex justify-content-between align-items-center"
            >
              <div class="d-flex align-items-center">
                <span class="todo ${item.done ? done : ""}"></span>
                <div class="row row-cols-8">
                  <div class="col ms-3 mt-3">
                    <p class="fw-bold card-title text-custom-title">
                      ${item.textArticle}
                    </p>
                  </div>
                  <!-- ici date -->>
                </div>
              </div>
              <div class="row justify-content-md-end">
                <div class="col-6">
                  <i
                    class="fa-solid fa-pen-to-square fa-xl text-success modifier-article" data-id=""
                  ></i>
                </div>
                <div class="col-6">
                  <i
                    class="fa-solid fa-trash-can fa-xl text-danger delete-article" data-id=""
                  ></i>
                </div>
              </div>
            </div>
          </div>
          <div class="card-body card-body__element">
            <div
              class="d-flex justify-content-between align-items-center"
            >
              <div
                class="d-flex align-items-center mr-custom-xs-button"
              >
                <span class="todo ${item.done ? done : ""}"></span>
                <div class="col ms-3 mt-2">
                  <p class="fw-bold card-title text-custom-title">
                    ${item.textDescription}
                  </p>
                </div>
              </div>
              <div
                class="row justify-content-md-end mr-custom-xs-button"
              >
                <div class="col-6">
                  <i
                    class="fa-solid fa-pen-to-square fa-xl text-success modifier-description" data-id=""
                  ></i>
                </div>
                <div class="col-6">
                  <i
                    class="fa-solid fa-trash-can fa-xl text-danger delete-description" data-id=""
                  ></i>
                </div>
              </div>
            </div>
          </div>
          <div
            class="card-footer card-footer____element card-footer--modifier border-0 bg-light"
          >
            <div
              class="d-flex justify-content-between align-items-center"
            >
              <div class="d-flex align-items-center">
                <div class="col ms-custom-categorie mt-3">
                  <p
                    class="fw-bold card-title text-custom-title w-custom-categorie"
                  >
                    Catégorie: ${item.textCategorie}
                  </p>
                </div>
                <div class="col ms-custom-categorie mt-3">
                  <p
                    class="fw-bold card-title text-custom-title w-custom-quantité"
                  >
                    Quantité: ${item.textQuantity}
                  </p>
                </div>
              </div>
              <div class="row justify-content-md-end">
                <div class="col-6">
                  <i
                    class="fa-solid fa-pen-to-square fa-xl text-success modifier-categorie data-id=""
                  ></i>
                </div>
                <div class="col-6">
                  <i
                    class="fa-solid fa-trash-can fa-xl text-danger delete-all" data-id=""
                  ></i>
                </div>
              </div>
            </div>
          </div>
          <a class="stretched-link" href="./detail.html"></a>
        </div>
      </div>`;
        this.li.insertAdjacentHTML("afterbegin", html);
      }
    
      toDoDone(item) {
        if (item.done) {
          this.spanTodo.classList.add("done");
          this.span.classList.add("done");
        }
      }
    
      creerToDo(
        item,
        inputArticleValue,
        inputDescriptionValue,
        inputCategorieValue,
        inputQuantityValue
      ) {
        const newTodo = [
          {
            textArticle: inputArticleValue,
            textDescription: inputDescriptionValue,
            textCategorie: inputCategorieValue,
            textQuantity: inputQuantityValue,
            done: false,
            date: new Date(),
            edit: false,
          },
        ];
        arrayText.push(newTodo);
      }
    }
    export default Todo;
    


    Voici mon index.js

    import "./style/scss/_custom.scss";
    import "./style/scss/_custom.css";
    import "./todo.js";
    
    import ToDoList from "./todo.js";
    // You can specify which plugins you need
    import * as all from "bootstrap";
    import { arrow, createPopper } from "@popperjs/core";
    // import { Tooltip, Toast, Popover } from "bootstrap";
    
    if (document.readyState === "loading") {
      window.addEventListener("DOMContentLoaded", pageReady);
    } else {
      const pageReady = () => {
        const todolist = new ToDoList();
        console.log(todolist);
      };
      pageReady();
    }
    



    voici mon html

    import "./style/scss/_custom.scss";
    import "./style/scss/_custom.css";
    import "./todo.js";
    
    import ToDoList from "./todo.js";
    // You can specify which plugins you need
    import * as all from "bootstrap";
    import { arrow, createPopper } from "@popperjs/core";
    // import { Tooltip, Toast, Popover } from "bootstrap";
    
    if (document.readyState === "loading") {
      window.addEventListener("DOMContentLoaded", pageReady);
    } else {
      const pageReady = () => {
        const todolist = new ToDoList();
        console.log(todolist);
      };
      pageReady();
    }
    
    <!DOCTYPE html>
    <html lang="fr">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link
          rel="stylesheet"
          href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css"
        />
        <title>ToDoList</title>
      </head>
      <body>
        <header>
          <nav
            class="fixed-top navbar-expand-md navbar-dark navbar navbar__coulour d-none d-lg-block"
          >
            <div class="container p-0 ms-5">
              <div class="container-fluid">
                <div class="row">
                  <div class="col-first-custom">
                    <div class="row bd-highlight mt-3">
                      <div class="p2 bd-highlight me-2 col-custom-logo">
                        <i class="fa-solid fa-list-check text-light fa-2xl"></i>
                      </div>
                      <div class="p2 align-self-center bd-highlight col">
                        <a href="#" class="navbar-brand text-brand">
                          <h1 class="h5">Do The Day</h1>
                        </a>
                      </div>
                    </div>
                  </div>
                  <div
                    class="col-md-6 col-xl-4 ms-custom-search w-custom-search ms-custom-search"
                  >
                    <form
                      action=""
                      class="row form-inline mt-3 col-xs m-custom-form"
                    >
                      <div class="col align-items-center overflow-hidden">
                        <input
                          type="text"
                          class="form-control mr-sm-1 border border-dark rounded input-top input-top__shadow input-top--bg-color"
                          autocomplete="search-keyword-suggestions"
                          maxlength="500"
                          aria-hidden="true"
                          value=""
                          placeholder="Chercher un article..."
                        />
                        <i
                          class="fa-solid fa-magnifying-glass text-light mt-custom-search-input ms-custom-search-input"
                        ></i>
                      </div>
                      <div class="col align-items-center overflow-hidden">
                        <input
                          type="text"
                          class="form-control mr-sm-1 border border-dark rounded input-top input-top__shadow input-top--bg-color"
                          autocomplete="search-keyword-suggestions"
                          maxlength="500"
                          aria-hidden="true"
                          value=""
                          placeholder="Catégorie"
                        />
                        <i
                          class="fa-solid fa-angle-down text-light mt-custom-search-input ms-custom-search-input"
                        ></i>
                      </div>
                    </form>
                  </div>
                  <div class="col-heure-custom">
                    <p href="#" class="navbar-brand text-date text-date__spacing">
                      20/05/2022
                    </p>
                    <p href="#" class="navbar-brand text-heure text-heure__spacing">
                      10H00
                    </p>
                  </div>
                </div>
              </div>
            </div>
          </nav>
          <nav
            class="navbar-left navbar-left--colour position-fixed h-100 top-0 start-0 d-none d-lg-block w-custom-nav"
          >
            <div class="container row justify-content-center py-5 px-5">
              <div class="row mt-custom-date">
                <div class="col-2">
                  <i class="fa-solid fa-calendar-check fa-xl text-light"></i>
                </div>
                <div class="col-2 ms-2">
                  <small class="text-light col mb-date-custom1">Aujourd'hui</small>
                </div>
              </div>
              <div class="row pt-4">
                <div class="col-2">
                  <i class="fa-solid fa-calendar-plus fa-xl text-light"></i>
                </div>
                <div class="col-2 ms-2">
                  <small class="text-light col mb-date-custom1">demain</small>
                </div>
              </div>
              <div class="row pt-4">
                <div class="col-2">
                  <i class="fa-solid fa-calendar-days fa-xl text-light"></i>
                </div>
                <div class="col-2 ms-2">
                  <small class="text-light col mb-date-custom1">Date...</small>
                </div>
              </div>
            </div>
            <div class="row">
              <div class="col d-flex justify-content-center">
                <i
                  class="fa-solid fa-book-open-reader fa-2xl text-light p-custom-read"
                ></i>
              </div>
            </div>
          </nav>
        </header>
        <section>
          <!-- Scroll add d-none pour le cacher pour l'instant -->
          <div
            class="scroll-right scroll-right--colour position-fixed h-100 top-0 start-0 end-0 bottom-0 d-none d-lg-none w-custom-nav z-index-scroll"
          >
            <div class="row justify-content-center mt-5 py-4 d-block d-lg-none">
              <div class="col">
                <form class="container" action="">
                  <div class="row row-cols-auto justify-content-center">
                    <div class="col mb-4">
                      <div
                        class="d-flex flex-row align-items-center overflow-hidden w-custom-left"
                      >
                        <input
                          type="text"
                          class="form-control border w-100 border-dark rounded input-top input-top__shadow input-top--bg-color"
                          autocomplete="search-keyword-suggestions"
                          maxlength="500"
                          aria-hidden="true"
                          value=""
                          placeholder="Un article ou une tâche..."
                        />
                        <i
                          class="fa-solid fa-angle-right text-light arrow-left"
                        ></i>
                      </div>
                    </div>
                    <div class="col mb-2">
                      <div
                        class="d-flex flex-row align-items-center overflow-hidden w-custom-description"
                      >
                        <input
                          type="text"
                          class="form-control border border-dark rounded input-top input-top__shadow input-top--bg-color"
                          autocomplete="search-keyword-suggestions"
                          maxlength="500"
                          aria-hidden="true"
                          value=""
                          placeholder="Description..."
                        /><i
                          class="fa-solid fa-angle-right text-light arrow-right"
                        ></i>
                      </div>
                    </div>
                  </div>
                  <div class="row row-cols-auto justify-content-center mt-3">
                    <div class="col mb-4 ms-lg-4">
                      <div
                        class="d-flex flex-row align-items-center overflow-hidden w-custom-left"
                      >
                        <input
                          type="text"
                          class="form-control border border-dark rounded input-top input-top__shadow input-top--bg-color"
                          autocomplete="search-keyword-suggestions"
                          maxlength="500"
                          aria-hidden="true"
                          value=""
                          placeholder="Catégorie..."
                        /><i
                          class="fa-solid fa-angle-right text-light arrow-left"
                        ></i>
                      </div>
                    </div>
                    <div class="col">
                      <div
                        class="d-flex flex-row align-items-center overflow-hidden w-custom-quantity"
                      >
                        <input
                          type="text"
                          class="form-control border border-dark rounded input-top input-top__shadow input-top--bg-color"
                          autocomplete="search-keyword-suggestions"
                          maxlength="500"
                          aria-hidden="true"
                          value=""
                          placeholder="Quantité..."
                        /><i
                          class="fa-solid fa-angle-right text-light arrow-right"
                        ></i>
                      </div>
                    </div>
                  </div>
                  <div
                    class="row row-cols-auto justify-content-center ps-custom-row-button"
                  >
                    <div class="col mt-5 pt-5">
                      <button type="button" class="btn btn-dark mt-3 btn-add">
                        Ajouter
                      </button>
                    </div>
                  </div>
                </form>
              </div>
            </div>
            <div
              class="row justify-content-end top-custom-button-round left-custom-button-round bottom-0 right-0"
            >
              <div class="col w-100 h-auto">
                <span
                  class="round-button rounded-circle position-absolute top-custom-round end-custom-round w-custom-rounded h-custom-rounded"
                >
                  <i
                    class="fa-solid fa-plus text-light fa-xl mt-custom-plus ml-custom-plus ml-custom-plus pr-custom-plus pb-custom-plus"
                  ></i>
                </span>
              </div>
            </div>
          </div>
          <!-- Fin scroll add -->
          <!-- Scroll search, d-none pour l'instant -->
          <div
            class="scroll-right scroll-right--colour position-fixed h-100 top-0 start-0 end-0 bottom-0 d-none d-lg-none w-custom-nav z-index-scroll"
          >
            <div class="row justify-content-center mt-5 py-4 d-block d-lg-none">
              <div class="col">
                <form class="container" action="">
                  <div class="row row-cols-auto justify-content-center">
                    <div class="col mb-4">
                      <div
                        class="d-flex flex-row align-items-center overflow-hidden w-custom-left"
                      >
                        <input
                          type="text"
                          class="form-control border w-100 border-dark rounded input-top input-top__shadow input-top--bg-color"
                          autocomplete="search-keyword-suggestions"
                          maxlength="500"
                          aria-hidden="true"
                          value=""
                          placeholder="Catégorie..."
                        />
                        <i
                          class="fa-solid fa-angle-right text-light arrow-left"
                        ></i>
                      </div>
                    </div>
                    <div class="col mb-2">
                      <div
                        class="d-flex flex-row align-items-center overflow-hidden w-custom-description"
                      >
                        <input
                          type="text"
                          class="form-control border border-dark rounded input-top input-top__shadow input-top--bg-color"
                          autocomplete="search-keyword-suggestions"
                          maxlength="500"
                          aria-hidden="true"
                          value=""
                          placeholder="Chercher un artcile ou une activité..."
                        /><i
                          class="fa-solid fa-angle-right text-light arrow-right"
                        ></i>
                      </div>
                    </div>
                  </div>
                  <div class="row">
                    <div class="col-8 mr-custom-date-logo">
                      <i
                        class="fa-solid fa-calendar-days fa-xl text-light mt-5"
                      ></i>
                    </div>
                    <div class="col-8 mt-custom-date ms-custom-date">
                      <p class="text-light">Date...</p>
                    </div>
                  </div>
                  <div
                    class="row row-cols-auto justify-content-center ps-sm-0 pt-custom-row-button"
                  >
                    <div class="col">
                      <button type="button" class="btn btn-dark mt-3 btn-add">
                        Chercher
                      </button>
                    </div>
                  </div>
                </form>
              </div>
            </div>
            <div class="row justify-content-end">
              <div class="col w-100 h-auto">
                <span
                  class="round-button rounded-circle position-absolute top-custom-round end-custom-round w-custom-rounded h-custom-rounded"
                >
                  <i
                    class="fa-solid fa-minus text-light fa-xl mt-custom-plus ml-custom-plus"
                  ></i>
                </span>
              </div>
            </div>
          </div>
          <!-- Fin scroll search -->
          <!-- Input large > -->
          <div class="row justify-content-center mt-5 py-4 d-none d-lg-block">
            <div class="col-custom-input m-custom-input">
              <form id="formAdd" class="container form-add" action="">
                <div
                  class="row row-cols-auto justify-content-lg-center ms-custom-first-inut"
                >
                  <div class="col">
                    <div
                      class="d-flex flex-row align-items-center overflow-hidden w-custom-left"
                    >
                      <input
                        type="text"
                        id="input-article"
                        class="form-control border w-100 border-dark rounded input-top input-top__shadow input-top--bg-color"
                        autocomplete="search-keyword-suggestions"
                        maxlength="500"
                        aria-hidden="true"
                        value=""
                        placeholder="Un article ou une tâche..."
                      />
                      <i class="fa-solid fa-angle-right text-light arrow-left"></i>
                    </div>
                    <p class="add-article-error text-danger ms-1">
                      Veuillez entrer un article ou une tâche s'il vous plait!.
                    </p>
                  </div>
                  <div class="col">
                    <div
                      class="d-flex flex-row align-items-center overflow-hidden w-custom-description"
                    >
                      <input
                        type="text"
                        id="input-description"
                        class="form-control border border-dark rounded input-top input-top__shadow input-top--bg-color"
                        autocomplete="search-keyword-suggestions"
                        maxlength="500"
                        aria-hidden="true"
                        value=""
                        placeholder="Description..."
                      /><i
                        class="fa-solid fa-angle-right text-light arrow-right"
                      ></i>
                    </div>
                  </div>
                </div>
                <div class="row mt-3 align-self-center">
                  <div class="col ms-lg-4">
                    <div
                      class="d-flex flex-row align-items-center overflow-hidden w-custom-left"
                    >
                      <input
                        type="text"
                        id="input-categorie"
                        class="form-control border border-dark rounded input-top input-top__shadow input-top--bg-color"
                        autocomplete="search-keyword-suggestions"
                        maxlength="500"
                        aria-hidden="true"
                        value=""
                        placeholder="Catégorie..."
                      /><i
                        class="fa-solid fa-angle-right text-light arrow-left"
                      ></i>
                    </div>
                    <p class="add-categorie-error text-danger ms-1d">
                      Veuillez entrer la catégorie s'il vous plait!.
                    </p>
                  </div>
                  <div class="col">
                    <div
                      class="d-flex flex-row align-items-center overflow-hidden w-custom-quantity"
                    >
                      <input
                        type="text"
                        id="input-quantity"
                        class="form-control border border-dark rounded input-top input-top__shadow input-top--bg-color"
                        autocomplete="search-keyword-suggestions"
                        maxlength="500"
                        aria-hidden="true"
                        value=""
                        placeholder="Quantité..."
                      /><i
                        class="fa-solid fa-angle-right text-light arrow-right"
                      ></i>
                    </div>
                    <p class="add-quantity-error text-danger ms-1">
                      Veuillez entrer la quantité s'il vous plait!.
                    </p>
                  </div>
                </div>
                <div class="row row-cols-auto justify-content-center">
                  <div class="col mx-sm-5 mx-custom-md-add">
                    <button type="submit" class="btn btn-dark mt-3 btn-add">
                      Ajouter
                    </button>
                  </div>
                </div>
              </form>
            </div>
            <div class="col-2 m-custom-read d-none d-lg-block">
              <i class="fa-solid fa-book-open-reader fa-2xl text-light"></i>
            </div>
          </div>
          <!-- Fin input large > -->
          <!-- Nav, logo et loop pour version portable -->
          <nav class="fixed-top navbar-expand-md navbar-dark d-block d-lg-none">
            <div class="container-fluid nav-scroll">
              <div class="row">
                <div class="col-8">
                  <div class="row bd-highlight mt-3">
                    <div class="p2 bd-highlight col-custom-logo-scroll">
                      <i class="fa-solid fa-list-check text-light fa-2xl"></i>
                    </div>
                    <div class="p2 align-self-center bd-highlight col-2">
                      <a href="#" class="navbar-brand text-brand">
                        <h1 class="h5">Do The Day</h1>
                      </a>
                    </div>
                  </div>
                </div>
                <div class="col">
                  <i
                    class="fa-solid fa-magnifying-glass fa-xl text-light mt-custom-loop ms-custom-loop"
                  ></i>
                </div>
              </div>
            </div>
          </nav>
          <!-- Fin Nav, logo et loop pour version portable -->
          <!-- artciles   -->
          <div
            class="row g-4 ps-custom-container-article pt-5 mt-3 z-index-article"
          >
            <div class="itmes">
              <ul class="list-itmes"></ul>
            </div>
            <div class="itmes">
              <ul class="list-itmes"></ul>
            </div>
          </div>
          <!-- Fin Article -->
          <!-- Button +, d-block petit = d-none quand s'oeuvre le modal add, d-lg-none  -->
          <div
            class="row justify-content-end position-absolute top-custom-button-round left-custom-button-round bottom-0 right-0 d-block d-lg-none"
          >
            <div class="col w-100 h-auto">
              <span
                class="round-button rounded-circle position-absolute top-custom-round end-custom-round w-custom-rounded h-custom-rounded"
              >
                <i
                  class="fa-solid fa-plus text-light fa-xl mt-custom-plus ml-custom-plus ml-custom-plus pr-custom-plus pb-custom-plus"
                ></i>
              </span>
            </div>
          </div>
        </section>
        <footer></footer>
      </body>
    </html>
    <!-- d-block d-lg-none pour petit block grande montre -->
    





    -
    Edité par DavidBouhaben 11 juin 2022 à 15:21:10

    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2022 à 15:21:42

      Bonjour,

      peux-tu éditer ton message pour y mettre les espaces qui manquent ? C'est difficile à lire.

      Tu peux aussi revoir ton code JS ligne 234, il manque un guillemet pour fermer l'attribut class. Pas sûre que ça soit lié à ton problème, mais on sait jamais.

      -
      Edité par Lamecarlate 11 juin 2022 à 15:22:35

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        11 juin 2022 à 16:39:33

        Lamecarlate a écrit:

        Bonjour,

        peux-tu éditer ton message pour y mettre les espaces qui manquent ? C'est difficile à lire.

        Tu peux aussi revoir ton code JS ligne 234, il manque un guillemet pour fermer l'attribut class. Pas sûre que ça soit lié à ton problème, mais on sait jamais.

        -
        Edité par Lamecarlate il y a environ 1 heure

        J'ai réussi à avancer un peu, j'ai réussi à ajouter un article avec les bons phrases etc. Mais, j'ai une autre problème, l'article se rajoute deux par deux et non 1 par un c'est vraiement bizzare

        On peut voir que dans la ligne 67 j'ai écrit this.list.innerHTML = ""
        C'est pour mettre l'article à zéro au départ mais ca ne fonctionne pas, est ce que tu peux m'éxpliquer pourquoi ? list === ul
        A mon avis c'est parceque dans la ligne this.list.insertAdjacentHtml("afterbegin", html). html est le variable de mon HTML pour l'article.

        Si c'est insertAdjacentHtml est le problème, comment on initialise a vide ("") pour pouvoir commencer à rien ?

        Voici mon nouveau code todo.js

        const arrayText = [
          {
            textArticle: "Article",
            textDescription: "Description",
            textCategorie: "Activiter",
            textQuantity: 5,
            done: false,
            date: new Date(),
            edit: false,
          },
        ];
        
        // DOM
        const ul = document.querySelector("ul");
        const formAdd = document.querySelector("#formAdd");
        const inputArticle = document.querySelector("#input-article");
        const inputdescription = document.querySelector("#input-description");
        const inputCategorie = document.querySelector("#input-categorie");
        const inputQuantity = document.querySelector("#input-quantity");
        const addArticleError = document.querySelector(".add-article-error");
        const addCategorieError = document.querySelector(".add-categorie-error");
        const addquantityError = document.querySelector(".add-quantity-error");
        
        // Créer la classe todolist
        class Todo {
          constructor() {
            this.list = document.querySelector(".list-itmes");
            this.renderingTodo();
        
            // EventListener
            formAdd.addEventListener("submit", (event) => {
              event.preventDefault();
              this.updateToDo(); // Ou updateToDoList à voir
            });
        
            formAdd.addEventListener(
              "blur",
              (event) => {
                event.target.style.color = "white";
              },
              true
            );
        
            formAdd.addEventListener(
              "focus",
              (event) => {
                event.target;
              },
              true
            );
        
            formAdd.addEventListener(
              "click",
              (event) => {
                event.target;
              },
              true
            );
          }
        
          renderingTodo(
            inputArticleValue,
            inputDescriptionValue,
            inputCategorieValue,
            inputQuantityValue
          ) {
            this.list.innerHTML = "";
            arrayText.forEach((item, index) => {
              if (!item.edit) {
                this.createToDoElementDom(
                  item,
                  index,
                  inputArticleValue,
                  inputDescriptionValue,
                  inputCategorieValue,
                  inputQuantityValue
                );
              } else {
                this.editToDoElement(item, index);
              }
        
              this.toDoDone(item);
              this.list.appendChild(this.li);
            });
          }
        
          updateToDo() {
            const inputAddValue = [
              inputArticle.value,
              inputdescription.value,
              inputCategorie.value,
              inputQuantity.value,
            ];
        
            this.filledInputAddToZero(inputAddValue);
            this.errorInputAdd(inputAddValue);
            this.renderingTodo(
              inputAddValue[0],
              inputAddValue[1],
              inputAddValue[2],
              inputAddValue[3]
            );
          }
        
          filledInputAddToZero(inputAddValue) {
            if (inputAddValue) {
              inputArticle.value = "";
              inputdescription.value = "";
              inputCategorie.value = "";
              inputQuantity.value = "";
              addArticleError.classList.add("add-article-error");
              addCategorieError.classList.add("add-categorie-error");
              addquantityError.classList.add("add-quantity-error");
            }
          }
          errorInputAdd(inputAddValue) {
            if (
              inputAddValue[0] === "" &&
              inputAddValue[1] === "" &&
              inputAddValue[2] === "" &&
              inputAddValue[3] === ""
            ) {
              addArticleError.classList.remove("add-article-error");
              addCategorieError.classList.remove("add-categorie-error");
              addquantityError.classList.remove("add-quantity-error");
            }
          }
        
          createToDoElementDom(
            item,
            index,
            inputArticleValue,
            inputDescriptionValue,
            inputCategorieValue,
            inputQuantityValue
          ) {
            this.li = document.createElement("li");
            this.li.classList.add("list");
            // const dates = item.date;
            // const date =
            //   ("0" + dates.getDate()).slice(-2) +
            //   "/" +
            //   ("0" + dates.getMonth()).slice(-2) +
            //   "/" +
            //   dates.getFullYear();
            // const heure = dates.getHours() + ":" + dates.getMinutes();
            // <div class="col ms-custom-date mt-custom-date">
            //   <p class="fw-bold card-title text-light h-custom-date">${date}</p>
            //   <p class="fw-bold card-title text-light ms-3">${heure}</p>
            // </div>;
        
            const html = `<div class="col mb-4 mt-5 pe-4">
            <div class="card card__element card--modifier rounded">
              <div
                class="card-header card-header__element card-header--modifier"
              >
                <div
                  class="d-flex justify-content-between align-items-center"
                >
                  <div class="d-flex align-items-center">
                    <span class="todo ${item.done ? done : ""}"></span>
                    <div class="row row-cols-8">
                      <div class="col ms-3 mt-3">
                        <p class="fw-bold card-title text-custom-title">
                          ${inputArticleValue}
                        </p>
                      </div>
                      <!-- ici date -->>
                    </div>
                  </div>
                  <div class="row justify-content-md-end">
                    <div class="col-6">
                      <i
                        class="fa-solid fa-pen-to-square fa-xl text-success modifier-article" data-id=""
                      ></i>
                    </div>
                    <div class="col-6">
                      <i
                        class="fa-solid fa-trash-can fa-xl text-danger delete-article" data-id=""
                      ></i>
                    </div>
                  </div>
                </div>
              </div>
              <div class="card-body card-body__element">
                <div
                  class="d-flex justify-content-between align-items-center"
                >
                  <div
                    class="d-flex align-items-center mr-custom-xs-button"
                  >
                    <span class="todo ${item.done ? done : ""}"></span>
                    <div class="col ms-3 mt-2">
                      <p class="fw-bold card-title text-custom-title">
                        ${inputDescriptionValue}
                      </p>
                    </div>
                  </div>
                  <div
                    class="row justify-content-md-end mr-custom-xs-button"
                  >
                    <div class="col-6">
                      <i
                        class="fa-solid fa-pen-to-square fa-xl text-success modifier-description" data-id=""
                      ></i>
                    </div>
                    <div class="col-6">
                      <i
                        class="fa-solid fa-trash-can fa-xl text-danger delete-description" data-id=""
                      ></i>
                    </div>
                  </div>
                </div>
              </div>
              <div
                class="card-footer card-footer____element card-footer--modifier border-0 bg-light"
              >
                <div
                  class="d-flex justify-content-between align-items-center"
                >
                  <div class="d-flex align-items-center">
                    <div class="col ms-custom-categorie mt-3">
                      <p
                        class="fw-bold card-title text-custom-title w-custom-categorie"
                      >
                        Catégorie: ${inputCategorieValue}
                      </p>
                    </div>
                    <div class="col ms-custom-categorie mt-3">
                      <p
                        class="fw-bold card-title text-custom-title w-custom-quantité"
                      >
                        Quantité: ${inputQuantityValue}
                      </p>
                    </div>
                  </div>
                  <div class="row justify-content-md-end">
                    <div class="col-6">
                      <i
                        class="fa-solid fa-pen-to-square fa-xl text-success modifier-categorie data-id=""
                      ></i>
                    </div>
                    <div class="col-6">
                      <i
                        class="fa-solid fa-trash-can fa-xl text-danger delete-all" data-id=""
                      ></i>
                    </div>
                  </div>
                </div>
              </div>
              <a class="stretched-link" href="./detail.html"></a>
            </div>
          </div>`;
            this.li.insertAdjacentHTML("afterbegin", html);
        
            this.creerToDo(
              item,
              index,
              inputArticleValue,
              inputDescriptionValue,
              inputCategorieValue,
              inputQuantityValue
            );
          }
        
          toDoDone(item) {
            if (item.done) {
              this.spanTodo.classList.add("done");
              this.span.classList.add("done");
            }
          }
        
          creerToDo(
            item,
            inputArticleValue,
            inputDescriptionValue,
            inputCategorieValue,
            inputQuantityValue
          ) {
            const newTodo = {
              textArticle: inputArticleValue,
              textDescription: inputDescriptionValue,
              textCategorie: inputCategorieValue,
              textQuantity: inputQuantityValue,
              done: false,
              date: new Date(),
              edit: false,
            };
            arrayText.push(newTodo);
          }
        }
        export default Todo;
        



        • Partager sur Facebook
        • Partager sur Twitter

        Todolist push ne fonctionne pas, undefined

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown