Beiträge von Arne Drews

    Zunächst mal hat der erste Code mit dem zweiten gar nichts zu tun. Das eine ist ein Eventhandler, das andere eine Abfrage der location. Beide haben jeweils einen anderen Zweck.

    Code
    1. $(document).ready(function() {
    2.    ...
    3. }

    ist, wie DER schon geschrieben hat eine Funktionalität der jQuery Library. In reinem JavaScript sähe das Äquivalent bspw. so aus:

    Code
    1. document.addEventListener( 'DOMContentLoaded', function() {
    2.     ...
    3. });

    Das ganze ( egal, welche Variante ) sorgt lediglich dafür, dass alles innerhalb der function erst ausgeführt wird, wenn alle Elemente des Dokument geladen sind, das Dokument also vollständig ist. Damit wird verhindert, dass man bspw, nicht auf ein Element zugreift, das evtl. noch gar nicht geladen wurde, da HTML sequentiell von oben nach unten abgearbeitet wird.


    Worin lkiegt der Unterschied? Was ist richtig oder falsch? Wo kann mir das "auf die Füße fallen"?

    Wie gesagt hat das eine mit dem anderen nichts zu tun. Ob richtig oder falsch kann man aufgrund der paar gezeigten Zeilen nicht wirklich beantworten. Die zweite Variante macht für mich allgemein wenig Sinn, zumindest habe ich selber für so eine Abfrage noch keinen relevanten Fall gehabt.


    Auf die Füße fallen kann Dir das aus meiner Sicht nicht, da die location schon zur Verfügung steht, bevor das Dokument vollständig geladen ist.


    Ob jQuery nun so eine große Hilfe und Erleichterung ist, sehe ich persönlich etwas anders. Für mich ist jQuery absolut überbewertet und nur in schätzungsweise 5% aller Fälle evtl. notwendig ( Zahl einfach mal in den Raum geworfen! ). Die große Selektionsfähigkeit von jQuery ist bspw. mit ca. 3kB Scriptaufwand mindestens genauso gut reproduzierbar. Was Animationen angeht, die ich mit CSS3 nicht hinbekomme, da macht jQuery vielleicht Sinn. Aber wann habe ich den Fall mal...

    Die Meta-Description wird von Google ignoriert, solange ausreichend Text im Content gefunden wird. Die Keywords werden m.M.n. allerdings schon berücksichtigt, haben allerdings lange nicht eine so hohe Gewichtung, wie der Content.

    Als kleine Notiz am Rande: cURL ist fast immer file_get_contents() & Co. vorzuziehen, da diese Funktionen alle auf fopen() basieren. Und diese Funktion erlaubt nur den Zugriff auf externe Quellen, wenn die Direktive allow_url_fopen in der PHP Konfiguration aktiviert ist. Dies ist zwar in vielen Fällen so, aber eben nicht in allen. Sollte man mal in die Verlegenheit kommen, auf einen Webspace zu wechseln, der diese Direktive nicht aktiviert hat, funktionieren solche Dinge dann plötzlich nicht mehr.


    cURL funktioniert immer und gehört zu Standard-Paketen bei PHP. Es lohnt sich, darauf zurückzugreifen.

    Sollte man öfter in die Verlegenheit kommen, cURL nutzen zu wollen/müssen, kann man sich einen Wrapper schreiben, der alles etwas vereinfacht.

    Ich verstehe die Frage ehrlich gesagt nicht. Egal womit eine Website erstellt wird, am Ende wird immer noch HTML ausgespuckt, weil das die Browser interpretieren. Will ich vernünftig an dem Layout einer Website etwas anpassen können oder selbst in der Lage sein,eine von Grund auf zu erstellen, benötige ich HTML. Man sollte sich sowieso nie auf irgendwelche Generatoren verlassen, die produzieren in den meisten Fällen ganz schönen Mist.

    Das ist grundsätzlich egal. Es gibt sicher bessere Programme, aber wenn Du damit gut zurecht kommst und für Dich passable Ergebnisse erhältst, kannst Du auch das nehmen. Später würde ich allerdings noch versuchen, das Bild gegen eine HTML/CSS Basis auszutauschen. Das wird etwas aufwendiger, aber Du hast dann viel mehr Möglichkeiten, bspw. kannst Du Probleme mit den mathematischen Algorithmen bekommen, wenn Du die Berechnungen und das Bild testweise für eine 1920x1080 zusammenfrickelst und dann auf 1024x768 spielen willst.


    Könnte ich mir vorstellen... ohne das jetzt im Detail durchdacht zu haben.

    Ich würde ja auch onclick verzichten und die Logik komplett in JS auslagern. Die Texte ( je nach Länge und produktiver Verwendung ) kann ich auch an den dataset der Schaltflächen setzen und direkt drauf zugreifen.


    Beispiel ( für multi row ):

    JavaScript
    1. var _btn = document.querySelectorAll('button');
    2. _btn.forEach( i => {
    3. i.addEventListener('click', function(e) {
    4. _content = this.closest('div').querySelector(':scope .content');
    5. _content.innerHTML = this.dataset.text;
    6. });
    7. });

    Hinweis: Für IE und Edge müssen kleine Anpassungen gemacht werden, die ich hier aufgrund der Übersichtlichkeit und bewusst weggelassen habe!


    Warum auf die Weise?

    Weil ich so mein JavaScript so gut wie nie wieder anpassen muss! Du kannst so viele rows dazu packen, wie Du möchtest, das JavaScript funktioniert automatisch für alle. Vorausgesetzt natürlich, die HTML Auszeichnung ist immer korrekt.


    Warum kein onclick?

    Weil ich damit das Standard Klick-Ereignis des Elements überschreibe, addEventListener() erweitert das Standard Ereignis lediglich. Benötige ich das wirklich nicht, gibt es die Event-Methoden preventDefault() oder stopPropagation(). So kann ich steuern, o ich mich an das Ereignis ranhänge oder wirklich komplett neu schreiben will.

    Fangen wir mal vorne an... Für einen Vergleich eine Prüfung benötigst Du grundlegend mind. zwei Werte. Ganz grundlegend sähe das so aus:

    JavaScript
    1. var IsEqual = value1 == value2;

    Bei Dir ist value2 aber eine Collection ( Array, Objekt o.ä. ), d.h. Du musst prüfen, ob value1 in value2 enthalten ist, das sähe für Arrays so aus:

    JavaScript
    1. var IsEqual = value2.includes( value1 );

    Jetzt müsstest Du also ein Array haben, das alle Werte aus dem Wörterbuch enthält, also benennen wir mal value2 in dictionary und value1 in word um und fügen Beispieldaten ein:

    JavaScript
    1. var dictionary = ["hallo","welt"];
    2. var word = "Welt";
    3. WordExists = dictionary.includes( word ); // liefert false, da CaseSensitive geprüft wird
    4. WordExists = dictionary.includes( "welt" ); // liefert true

    Auf der Basis sollte das aufgebaut sein. Aber ich denke, hier sieht man relativ schnell, dass Du erstmal Dein Wörterbuch haben müsstest. Es macht bspw. keinen Sinn, alle Wörter in ein JavaScript-Array zu pflanschen. Da würde ich lieber auf einen Ajax-Request zurückgreifen, der die Wörter über eine Datenbank prüft.

    bin mir jetzt nicht sicher, aber durch array.push werden die "" immer dazu gefügt.

    Nö, push() wirft den korrekten Datentypen in das Array. Das Problem hier ist einfach nur, dass alles Formularfelder ( die zur Eingabe dienen ) grundsätzlich erstmal als String behandelt werden, ganz egal, was dort eingetragen wurde.


    Du hast aber in Deinem Beispiel doch für die Berechnung bereits parseInt() verwendet, warum dann nicht gleich bei der Übergabe an das Array:

    Code
    1. datenbank.push( parseInt(eingabe) );

    Problem gelöst...


    Dazu muss natürlich gewährleistet sein, dass der Wert der Eingabe tatsächlich einem Integer entspricht, oder man legt eine Prüfung und Fehlerbehandlung an.

    Damit geht es. Eigentlich habe ich mit 7Zip noch nie Probleme gehabt, warum Winrar da besser sein soll, wundert mich schon.

    Ja, mich hats auch gewundert. Arbeite eigentlich nur mit WinRAR und habe auch auf Arbeit keine Probleme damit erstellte Zips mit dem Zip von Windows oder 7Zip wieder zu entpacken. Ich werde die Pakete oben mal gegen die mit Windows ZIP austauschen bei Gelegenheit. Könnten eh mal wieder neue Versionen erstellt werden :)


    Lupus_III natürlich darfst Du Fragen stellen.