Beiträge von AndreasB

    Was ich damit meine ist, dass du bei jedem Schleifendurchlauf das Ergebnis einem Objekt festhältst.

    So in Etwa:

    Hinterher hast du dann ein Objekt wi in #4 beschrieben.

    1. Eigentlich wollte ich beide Arrays mit .equals() vergleichen.

    equals ist keine native JavaScript Methode. Aus welcher Library ist die?
    edit: Ich verstehe... ^^


    Stattdessen funktioniert es aber mit dem Vergleichsoperator ==. Soll das so?

    Du meinst hier:

    JavaScript
    splittedEingabe[j].toLowerCase() == wortliste[i]

    Ja, das soll so sein. (Was wundert dich denn daran?)


    2. Das eigentliche Problem ist allerdings, dass das Programm niemals in den if-Teil springt, selbst wenn ich ein exaktes Wort aus der Liste verwende. Es kommt immer die Ausgabe aus dem else-Teil. Als ich die Eingabe noch nicht in substrings gesplitted hatte, ging das mit einem Wort allerdings problemlos.

    Hast du die Funktion schonmal gedebuggt? (Für den Anfang schreib mal Konsolenausgaben in jeden If-Zweig).


    War das vorher nur eine einfache Schleife?
    Das Problem, dass du hast, ist, dass break nur aus der Inneren Schleife springt und dann mit dem nächsten Eintrag der Wortliste weitermacht.

    Wenn das letzte Wort in der Wortliste kein Treffer ist, siehst du nur die Ausgabe aus dem else-Zweig, denn die Ausgabe wird jedes Mal überschrieben.


    Ich würde dir vorschlagen, statt das Ergebnis direkt in dein HTML zu schreiben, in deiner Schleife ein Ergebnisobjekt zu füllen, das jeden Eintrag deines Wortarrays auf einen boolischen Wert mappt, der anzeigt, ob das Wort gefunden wurde oder nicht.
    Das würde dann so in etwa aussehen:

    Wenn das Objekt erstellt wurde, kann man es dann auswerten.


    Wenn es nur um Treffer oder nicht geht, würde ich dir empfehlen eine Boolische Variable zu deklarieren mit false zu initialisieren und wenn ein Begriff gefunden wurde, auf true zu setzen:

    Das Geheimnis warum es in "Bildschirmgrößen testen" mal geht und mal nicht, liegt an diesem kleinen Knopf: html-seminar.de/woltlab/attachment/2906/
    Der stellt die Touch-Emulation ein bzw. aus. Wenn du ein Device auswählst, wird der automatisch aktiviert. Wenn du "Benutzerdefiniert" auswählst, wir der automatisch deaktiviert.


    Im Grunde hast du das Problem richtig erkannt:

    Warum bleibt das Submenü stehen wenn es über :hover geöffnet wird und verschwindet, wenn es am Touchdevice mit Klick (:active) geöffnet wird?

    Der Grund dafür ist der, dass die Pseudoklasse :active so lange auf das Element gesetzt wird, wie auf das Element geklickt / getouched wird.

    Ich muss MrMurphy recht geben: Wenn du sowas sauber und Cross-Plattform Sicher implementieren möchtest muss du das mit JavaScript machen.
    Das Qhover-Ausklappverhalten" ist ganz nett zum Spielen, aber nichts für Produktionscode.

    Du hast vergessen das Bootstrap JavaScript einzubinden.

    https://getbootstrap.com/docs/…ing-started/introduction/


    HTML
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>


    Alles was bei dir klappt ist reines CSS. Die Klick Funktion ist JS.

    Meinst du so in etwa?

    https://codepen.io/Mr_Beer/pen/vYygZXy?editors=0011


    um rechts links habe ich mich jetzt nicht gekümmert, kannst du aber gerne nachbessern.

    MrMurphy hat es schon in #11 gesagt: Wenn es so floaten soll, wie du willst, dürfen die <p> Elemente kein float: right und kein display: inline-block haben.

    Die width-Angabe kannst du dann auch komplett von den <p> Elementen entfernen.


    Außerdem solltest du für .card h1 das height entfernen. Dadurch wächst dann dein h1 Container mit, wenn die Überschrift zweizeilig wird.

    Meinst du so ?

    Ja, das war die Idee.


    Zu deinen Lösungsansätzen: Wenn ich das Problem nicht kenne, kann ich nichts zu den Lösungen sagen.

    Es geht wohl um das archivieren, von alten Einträgen? Ergibt sich das Problem erst durch die Lösung mit dem extra Server,

    Dein Link geht nicht (Page not found)

    ich habe den Link gefixed.


    Wie gesagt im Serverheader kann ich nichts setzen da ich da Softwaretechnisch nicht hinkomm.

    Daher war auch der Vorschlag, dass du einen separaten Webserver aufsetzt, der die Daten vom NAS bereit stellt und die CORS Header setzt.

    Glaube die S7 1200 kann kein Php.

    Aber doch scheinbar http. Dann Bau' dir doch ein Gateway (Die Sprache ist völlig egal), das die .csv vom NAS bereit stellt und die benötigten CORS header setzt.


    Wie Jonas3344 meinte:

    - Du lieferst die Files von der Fritzbox per Webserver und PHP aus (wenn die so was hat) und setzt dabei die CORS-Header richtig

    nur ist hier PHP nicht entscheidend sondern, dass die CORS Header gesetzt sind.

    die Herausforderung ist, das ich im negativen Fall trotzdem in den positiven zweig möchte.

    dafür ist Promise.prototype.finally() da.

    (Außer du musst den IE11 berücksichtigen)


    Aber du kannst das natürlich auch so machen wie du es nun tust.

    Solange es funktioniert und nicht mehr als ein Paar Leute damit arbeiten müssen (sonst kann es sein, dass du deine Kollegen damit verwirrst), kannst du das implementieren, wie es für dich passt.

    Wo kommt den das data her, das du versuchst auszugeben?

    deine Daten befinden sich in der Variablen processedResponse.

    Die musst du ausgeben.


    JavaScript
    get_record(key).then(response => {
       return response;
     }).then(processedResponse => { // <- hier sind deine Daten!
       if (processedResponse === true) {
          console.log('data: ' + data) // <- wo kommt das her?
          update_record(data); // <- oder das?
       } else {
         insert_record(data); // <- oder das?
       }
     })

    caddy Danke für den Code, jetzt verstehe ich was du tun willst.

    jonas3344 hat recht, du gibst aus der Funktion schon ein Promise zurück, allerdings nur wenn db truthy ist.

    Du solltest IMMER ein Promise zurückgeben, sonst kannst du mit der Funktion nicht gut arbeiten.

    Du versuchst das ja selber mit:

    JavaScript
    let processedResponse = get_record(key);
    if (processedResponse === false) { 
        return resolve("false") } 
    else { 
        return resolve("true")
    }

    auszubügeln.


    Versuch das mal so:


    Außerdem hat deine Funktion zwei Abhängigkeiten (db und tablename) die du am Besten mit in die Funktion gibst um sie handelbarer zu machen.