HTML/CSS/JS: Warum funktioniert meine bindDelete-Funktion nicht und wie kann ich die Preisangaben untereinander formatieren?

1 Antwort

Warum funktioniert meine bindDelete-Funktion nicht, um die li-Elemente wieder zu löschen?

Die Variable that wird von dir nicht definiert. Entweder du packst die Definition mit an den Funktionsanfang:

const that = this;

oder du nutzt zum einen eine Arrow-Funktion, um den Event Handler zu definieren und zum anderen this statt that.

button.addEventListener('click', () => {
  /* ... */
  this.order.addArticle(article);
  this.renderOrder();
Wie kann ich es schaffen, dass der Preis von jedem li-Element genau so untereinander ist, sodass man ihn schön zusammenrechen könnte:

Es gibt verschiedene Wege:

  • Verwende keine Liste, sondern eine Tabelle mit festen Spaltenbreiten; ordne Name, Preis und Button dabei in unterschiedliche Spalten ein
  • Packe die jeweiligen Angaben (Name, Preis) in einzelne (span-)Elemente. Gib denen mit CSS (width) eine entsprechende Breite oder ordne die Elemente mit einem CSS Grid an (via grid-template-columns kannst du die Spaltenbreiten vorgeben)

Zusätzlich wäre es wohl besser, die Preise mit CSS rechtsbündig auszurichten (text-align: right).

Zuletzt noch ein paar Anmerkungen zu deinem restlichen geteilten Code:

1) Diese Zeile ist überflüssig:

body.innerHTML = "";

Du überschreibst den Inhalt des body-Elements doch im Anschluss gleich noch einmal.

Wenn der Inhalt, den du in renderPage setzt, im Übrigen initial beim Laden der Seite angezeigt werden soll, würde ich ihn auch nicht dynamisch mit JavaScript einbinden, sondern direkt von Anfang an im body-Bereich ausliefern.

Mehr Sinn würde es m.E. machen, die konkreten Inhalte (Artikelname, Beschreibung, Preis, ID) in ein JSON-Objekt auszulagern und dann die einzelnen Artikelelemente via Schleife zu generieren. Statt mit innerHTML zu arbeiten, würde sich ein template-Element für diesen Fall gut eignen.

2) Es gibt kein HTML-Element namens sidebar. Naheliegend zu dem wäre ein aside-Element.

3) Solltest du strong allein aus dem Grund nutzen, den Preis visuell zu formatieren, dann entferne es und style den Text stattdessen mit CSS (siehe font-weight).


MATHECLUES 
Fragesteller
 19.05.2024, 12:44

Danke für die mühe

0