Beiträge von Sempervivum

    Zitat

    2. Ist es bei Javascript üblich Variablen in einer Schleifen zu definieren?

    Ja, häufig ist es sogar erforderlich, z. B. wenn man in einer Schleife HTML-Elemente anlegt:

    Code
    for (let i = 0; i < 10; i++) {
        let inp = document.createElement('input');
        document.getElementById('container').appendChild(inp);
    }

    Weil die Variable innerhalb der Schleife definiert wird, wird bei jedem Durchlauf ein neues Input-Element erzeugt und in der Container mit der ID 'container' eingefügt.

    Zitat

    1. Wenn man mittels querySelector nach .nr-person sucht, findet er trotzdem die dazugehörigen Klassen, obwohl sie "nr-person adult" und "nr-person child" heißen. Sucht er sich lediglich den Wortlaut "nr-person" raus?

    "nr-person child" ist nicht eine Klasse sondern man kann einem Element mehrere zuteilen, durch Leerzeichen getrennt, und auch mehrere abfragen:

    document.querySelectorAll('.nr-person') würde beide Elemente liefern, Erwachsene und Kinder

    document.querySelectorAll('.nr-person.child') dagegen nur das Eingabefeld für die Kinder

    Solch eine Aufgabe tritt relativ häufig auf. Ich schlage folgende Lösung vor:

    Die IDs durch Klassen ersetzen. Hat man jetzt z. B. den Plus-Button, kann man das dazugehörige Eingabefeld mit der Anzahl ermitteln, indem man das Elternelement ermittelt, in dem Fall das <td> und davon ausgehend über die Funktion querySelector mit der Klasse als Parameter das Eingabefeld.

    Außerdem schlage ich vor, um mehrfachen Code zu vermeiden, Herauf- und Herunterzählen mit nur einer Funktion zu erledigen.

    Ich habe davon eine Demo gemacht:

    Ich hoffe, durch die Kommentare ist es verständlich.

    Der Grund ist, dass dein div.hero die Navigation überdeckt, so dass die Mausaktionen nicht an die a-Elemente gelangen. Kurzfristige Lösung: Dem div.hero ein pointer-events: none; geben, das macht es durchlässig für Mausaktionen.

    Längerfristig gedacht ist es häufig so, dass absolute Positionierung und die damit verbunden Überdeckung die Ursache für Probleme sind, so wie hier. Nach Möglichkeit darauf verzichten.

    Alles klar, der Grund dafür, dass "[object Object]" angezeigt wird ist, dass der Wert in deinem data-Array, der unter dem Parameter value zur Verfügung steht, ein Objekt mit x und y ist. Da für dich ja offenbar der y-Wert von Interesse ist, kannst Du diesen im Formatter verwenden:

    Code
            formatter: function(value){
                return value.y + ' (100%) ';        //der value wird leider nicht angezeigt. Es steht "[object Object]".
            }

    Wenn Du statt des y-Wertes eine andere Variable anzeigen willst, ist das ohne weiteres möglich. Du musst sie nur auswählen, dafür müsste im zweiten Parameter des Formatters der context zur Verfügung stehen und darin ein Index für den Chart bzw. das Dataset. Damit kannst Du dann die Variable auswählen.

    Wenn Du initial-scale=1 angibst, stellt der Browser die Seite vom Zoom her genau so dar, wie Du sie gestaltet hast. Und Du hast bei allen Elementen die Breite auf > 500px gesetzt. Ist der Viewport schmaler, taucht zwangsläufig die horizontale Scrollbar auf. Deaktiviere ich diese Breitenangaben passen sich die Elemente dagegen an die Breite des Viewports an und die horizontale Scrollbar verschwindet.

    BTW: Du benutzt einen veralteten Doctype und float für die Gestaltung. Ich empfehle, auf HTML5 und Flexlayout umzustellen.

    Das genannte Meta-Tag ist nur eine Sache. Das ganze Layout der Seite muss auch passen, damit sie so angezeigt wird, wie Du es dir vorstellst. Hilfreicher als Screenshots wäre es, wenn man sich die Seite online ansehen könnte. Kannst Du die URL posten?

    Du schreibst

    Zitat

    ich habe zZt „width=device-width“

    Das entscheidende für das Zoomen ist jedoch die initial-scale-Anweisung. Hast Du die auch?

    Mit Hilfe von Stackoverflow und der Doku von chart.js habe ich heraus gefunden, dass sich dein Vorhaben mit mehreren charts umsetzen lässt: Ein Linechart für die gelbe Linie und drei Scattercharts für die braunen Punkte. Ich habe mal eine Demo gemacht, Werte, Farben, Stärken der Punkte etc. kannst Du sicher selbst anpassen:

    Wahrscheinlich wird es schon genügen, den Fehler in Zeile 48 zu beheben:

    Code
    if(input=="") { // hier ein doppeltes Gleichheitszeichen
        
                document.getElementById("listing").innerHTML = "";
                document.getElementById("listing").style.display = "none";
        
        
        }
        
    }

    oder besser einen else-Zweig anzulegen:

    Code
        } else {
                document.getElementById("listing").innerHTML = "";
                document.getElementById("listing").style.display = "none";
        }

    Mal sehen, was ich davon bisher verstehe:

    Die gelbe, gerade, horizontale Linie in dem Bild in deinem ersten Postion ist in Wirklichkeit ein Linegraph wie man ihn normaler Weise kennt und wie man ihn bei chart.js sieht.

    Diesem Diagramm möchtest Du jetzt die braunen Punktwerte hinzu fügen?

    Nein, ich würde nicht von OSM abraten, wenn es das liefert, was Du brauchst. Ich hatte selber schon daran gedacht, aber wegen des Overlays dachte ich, man braucht eine API. Das OVL soll sich ja beim Zommen und Pannen mit bewegen und dabei genau die Position auf der Karte behalten. Wie ich sehe, ist bei OSM auch eine Version mit Satellitenbildern in Arbeit.