Beiträge von Sempervivum

    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.

    Paint erzeugt Bitmap-orientierte Grafikdateien. Nachteil dabei: Sie lassen sich nur eingeschränkt skalieren, abwärts mit geringem, aufwärts mit starkem Qualitätsverlust. Willst Du eine gute Qualität auch auf großen Bildschirmen musst Du eine große Grafikdatei bereit stellen mit entspr. großer Ladezeit.

    Die Alternative sind vektororientierte Grafiken. Diese lassen sich ohne Qualitätsverlust skalieren und damit an die Größe des Browserfensters anpassen. Außerdem ist die Dateigröße, jedenfalls wenn die Grafik nicht zu komplex ist, kleiner als bei Bitmaps. Der wohl bekannteste kostenlose Editor für Vektorgrafiken ist Inkscape.

    Interessante Aufgabe. Ich denke schon, dass das mit Javascript möglich ist.

    Zitat

    Fakt ist, das Spiel sollte letztendlich auch Internetfähig sein, also man sollte es schon zu zweit spielen können, auch wenn die Spielpartner nicht gerade nebeneinander sitzen.

    Das ist eine gewisse Herausforderung, aber sicher auch machbar. Vor allem, wenn man ein Verfahren verwendet, bei dem man nicht wie bei einem Video die Bewegungen Frame-für-Frame überträgt, sondern nur die Anfangsparameter wie Stoßrichtung und Stoßstärke und die Bewegungen dann auf der anderen Seite neu berechnet.

    Zitat

    Aber alles erstmal Schritt für Schritt.

    Das ist sicher zu empfehlen. Ich habe vor einiger Zeit mal den ersten Schritt getan und den elastischen Stoß programmiert:

    Den Ball links oben kann man durch Ziehen mit der Maus bewegen. Nach Loslassen rollt er weiter und wird entsprechend der Reibung langsamer. Und wenn man gut gezielt hat, trifft er den zweiten Ball. :)

    Das mit dem Ziehen und Loslassen trifft die Vorgänge beim richtigen Billard noch nicht optimal. Auf Anhieb fällt mir aber keine bessere und einfache Lösung ein. Ich dachte daran, eine Queue zu zeichnen, wo man die Richtung mit der Maus durch Ziehen einstellt und durch schnellen Klick den Stoß auslöst, aber optimal wäre das auch nicht.

    Zitat

    Bekomme das leider nicht hin, 'content' entsprechende IDs zu geben

    Das ist gar nicht nötig, weil #content ja das Ziel ist, wohin die Texte sollen und das ist immer das selbe. Wenn der Text jeweils im value-Attribut steht, wie in deinem Code, ist es ganz einfach:

    Code
    <script type="text/javascript">
    function changeContent(txt){
        document.getElementById('content').innerHTML = txt;
    }
    </script>
    <div id="content">Das ist der aktuelle Text....</div>
    <input type="button" value="alternativer Text 1" onclick="changeContent(this.value);"/>
    <input type="button" value="alternativer Text 2" onclick="changeContent(this.value);"/>
    <input type="button" value="alternativer Text 3" onclick="changeContent(this.value);"/>

    Wenn die Text etwas länger werden sollten, ist es eher zu empfehlen, sie in Variablen zu definieren und diese als Parameter an changeContent() zu übergeben.