Was ist da schief (JS)?

Starte ich das Programm so beginnt es so wie ich es will. Irgendwann wird dann aber ein Fehler gezeigt

("main.js:27 Uncaught TypeError: Cannot read properties of null (reading 'setAttribute')

  at ClickIt (main.js:27)

  at clickvol2 (main.js:21)

  at HTMLParagraphElement.<anonymous> (main.js:30))

und mehrere Flächen farbig markiert und man muss manchmal doppelt klicken. Wo liegt hier der Fehler?

JS:
"use strict";

let genNum = function() {

    let gen = Math.random() * 9;

    let num = Math.round(gen);

    let numers = ["null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun"];

    let final = (numers[num]);

    if(final === "zehn") {

        genNum()

    }

    return final;

};

let i = 0;

document.getElementById("Punkteanzahl").textContent = i;

let clickvol2 = function() {

    if (document.querySelector("#eins", "#zwei", "#drei", "#vier", "#fünf", "#sechs", "#sieben", "#acht", "#neun").hasAttribute("class")) {

        console.log(".")

    } else {

        ClickIt(genNum())

    }};

let ClickIt = function(num) {

    let hash = "#";

    let ident = hash.concat(num);

    document.querySelector(ident).setAttribute("class", "click");

    document.querySelector(ident).addEventListener("click", function() {

    document.querySelector(ident).removeAttribute("class");

    clickvol2();

    i++;

})

};

ClickIt(genNum());

console.log(document.getElementById("Punkteanzahl").textContent)

...zur Frage

Guten Abend,

Beim ersten Ansehen ist mir folgendes aufgefallen:

if (document.querySelector("#eins", "#zwei", "#drei", "#vier", "#fünf", "#sechs", "#sieben", "#acht", "#neun").hasAttribute("class")) {...}

Probiere das mal mit document.querySelectorAll() - Diese Funktion kann mehrere Parameter (in diesem Falle Selektoren) aufnehmen und verarbeiten, was bei document.querySelector() meines Erachtens nicht der Fall ist.

...zur Antwort

Hier mein Vorschlag:

Erlaubt sind die Zeichen des Alphabets (ohne Umlaute) sowie Leerzeichen. Der im Klartext vorliegende Text wird zunächst in Kleinbuchstaben umgewandelt und anschließend um die mit key angegebenen Positionen verschoben.

def encrypt_caesar(text, key):
  alphabet = 'abcdefghijklmnopqrstuvwxyz'
  encrypted = ''
  for character in text.lower():
    encrypted += alphabet[(alphabet.find(character) + key) % 26] if character != ' ' else ' '
  return encrypted 
...zur Antwort

Guten Abend,

Ich persönlich arbeite relativ gerne mit Flexbox.

Daher würde ich wie folgt vorgehen:

  1. Einen Hauptcontainer erstellen
  2. im Hauptcontainer 3 weitere Container in der Reihe nebeneinander anordnen (der linke Container enthält die linke Card, der mittlere die beiden mittleren sowie der rechte die rechte Card)

Der Hauptcontainer ist für die vertikale Zentrierung der Cards verantwortlich, daher gilt unter Zuhilfenahme des Flexbox-Systems:

#main-container {
  display: flex;
  align-items: center;
}

Ich habe es nicht ausprobiert, aber damit sollte es funktionieren.

LG

...zur Antwort

Hallo,

Das dient meines Wissens zur Vermeidung sogenannter DOS bzw DDOS-Attacken, die den entsprechenden Webserver (der die angeforderte Webseite ausliefert) außer Kraft setzen sollen. Der Webserver kann dann nicht mehr auf weitere Anfragen reagieren und die Website ist voerst nicht mehr verfügbar.

Dienste wie Cloudflare schalten sich zwischen Client und Server und überprüfen den Browser (Client) auf bösartige Skripte, die genannte Attacken mitunter zum Ziel haben.

LG

...zur Antwort

Schönen guten Abend,

Leider kann ich Java nur sehr schlecht, für solche Berechnungen nutze ich meistens Python. Deine Aufgabe wird also sein, folgenden Algorithmus in Java zu schreiben.

Ich gehe davon aus, dass die Fakultät rekursiv berechnet werden soll. Daher habe ich 2 Funktionen verwendet. Erstere fk berechnet rekursiv die Fakultät der übergebenen Zahl, zweitere bk errechnet zunächst mithilfe von fk die Fakultät und berechnet daraus anschließend den Binomialkoeffizienten.

def fk(n):
  return 1 if n == 0 else n * fk(n - 1)

def bk(n, k):
  return fk(n) / (fk(k) * fk(n - k))

print(bk(3, 1))

In diesem Falle wird der Binomialkoeffizient von 3 über 1 berechnet. Du könntest den Code auch dahingehend erweitern, dass keine negativen Zahlen übergeben werden dürfen.

LG

...zur Antwort

Hallo,

Wenn du ein Zeichen einliest, ist dieses doch bereits als ASCII-Code gespeichert, sofern dein Computer die ASCII-Code-Tabelle verwendet (was der Fall sein sollte).

Das ist nun mal die Art und Weise, wie Computer Zeichen speichern. Gibst du das Zeichen aus, wird dieses nur aus dem entsprechenden ASCII-Code umgewandelt.

Hier ein simples Programm:

#include <stdio.h>

int main(void) {
  int c = getchar();
  printf("%d\n", c);
  return 0;
}

Das Programm gibt beispielsweise den korrekten ASCII-Code 65 für ein großes A aus.

LG

...zur Antwort

Nimm die Funktion atoi (ASCII to INT) aus der Standardbibliothek zur Konvertierung eines Strings in eine Ganzzahl.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
  int x = 2, y = atoi(argv[1]);
  printf("%d * %d = %d\n", x, y, x * y);
  return 0;
}

LG

...zur Antwort

Da das window-Objekt nicht definiert ist, gehe ich davon aus, dass du die Laufzeitumgebung NodeJS verwendest.

Um dem Browser eine Weiterleitung zu signalisieren, musst du eigentlich nur einen entsprechenden HTTP-Header setzen.

Ein einfaches Beispiel unter Verwendung des http-Moduls:

const http = require('http');

http.createServer((req, res) => {
  res.writeHead(301, {
    'Location': 'https://google.de'
  });
  res.end();
}).listen(8080);  

LG

...zur Antwort

Hallo,

Du hast angefangen C++ zu lernen und möchtest jetze eine Game Engine darin schreiben? Soll ich jetzt lachen oder weinen? Zumal C++ nicht gerade einfach zu erlernen ist und deine Mathematik-Kenntnisse zur Entwicklung einer brauchbaren Game-Engine definitiv nicht reichen werden.

Wie bereits geantwortet wurde, macht es auch keinen Sinn, Spiele auf dem iPad bzw iPhone zu programmieren.

Ich würde dir raten, erstmal richtig Programmieren zu lernen (was je nach Lernbereitschaft auch mal ein paar Jahre sein können) und dann weiter über deine vielen Ideen nachzudenken, die du mit deinem jetzigen Wissen nicht umsetzen kannst.

Liebe Grüße

...zur Antwort

Hallo,

Eine konkrete Idee für eine Website habe ich nicht. Da du nach eigener Aussage allerdings über gute JavaScript-Kenntnisse verfügst, würde ich dir raten, dich mit einem Framework wie React, Angular oder Vue auseinanderzusetzen.

Die moderne Webentwicklung geht immer mehr in Richtung Single Page Applications, die ihre Daten von einer REST-API beziehen. Zumindest muss man sagen, dass Single Page Applications nutzerfreundlicher sind als herkömmliche Websites und bezogen auf größere Datenmengen deutlich weniger Traffic verursachen. Konkret würde ich dir React ans Herz legen - Man muss etwas umdenken, aber die Entwicklung gestaltet sich sehr komfortabel.

Auch die Laufzeitumgebung NodeJS ist aus der modernen Webentwicklung eigentlich nicht mehr wegzudenken. Mithilfe von NodeJS würdest du im Sinne der Webentwicklung Datenbabfragen ausführen und deine REST-API implementieren, die sämtliche Anfragen des Clients entgegennimmt und eine entsprechende Antwort (meist im JSON-Format) zurückgibt. Ich selbst habe mit PHP angefangen - nachdem ich NodeJS gelernt habe aber kaum wieder angefasst.

Wenn du nach Projektideen für JavaScript suchst, hätte ich so auf die Schnelle 3 Beispiele, mit denen ich mich selbst einmal beschäftigt habe:

  • Rich Text Editor
  • SVG Editor
  • Zeichenfläche mit vielen Funktionen

LG

...zur Antwort

Hallo,

Meine persönliche Empfehlung ist Einstieg in SQL vom Rheinwerk Verlag.

Behandelt werden die Datenbanksysteme MySQL, Microsoft SQL Server sowie PostgreSQL.

Ich habe das Buch erst vor Kurzem durchgelesen und bin sehr zufrieden. Man lernt weit mehr als nur die Grundlagen. Neben Standardoperationen wie dem Einfügen oder Selektieren von Datensätzen werden Themen wie die Performanceoptimierung besprochen.

LG

...zur Antwort

Wenn du ohnehin NodeJS am besten kannst und eine moderne Applikation wie Soundcloud bauen möchtest, dann kann ich dir NodeJS nur empfehlen. In einer Single Page Application würde sich NodeJS für die Implementierung einer REST Schnittstelle auch bestens eignen.

LG

...zur Antwort

Eine Collation wird einem Zeichensatz zugeordnet und bestimmt die Sortierreihenfolge, die dann beispielsweise bei einer ORDER BY Klausel angewendet werden soll. Ein Beispiel wäre etwa der Umgang mit deutschen Umlauten bei einer Sortierung.

Wenn du einen möglichst großen und umfangreichen Zeichensatz verwenden möchtest, der beispielsweise auch mit Emojis umgehen kann, nutze als Zeichensatz utf8mb4 und als Collation utf8mb4_unicode_ci.

LG

...zur Antwort

Hallo,

Hier ein kleines Beispiel:

<!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .hidden {display: none;}
        </style>
    </head>
    <body>
        <input type="file" accept="image/png, image/jpeg" id="input">
        <button type="button">Bild anzeigen</button>
        <div class="image hidden"></div>
        <script>
            const input = document.querySelector('#input');
            const image = document.querySelector('.image');
            input.addEventListener('change', e => {
                const file = input.files[0];
                if(file.type.match('image/*')) {
                    const fileReader = new FileReader();
                    fileReader.addEventListener('load', e => {
                        const img = document.createElement('img');
                        img.setAttribute('src', e.target.result);
                        image.appendChild(img);
                    });
                    fileReader.readAsDataURL(file);
                }
            });
            const button = document.querySelector('button');
            button.addEventListener('click', e => {
                image.classList.toggle('hidden');
            });
        </script>
    </body>
</html>

Für Rückfragen und eventuelle Unklarheiten stehe ich gerne zur Verfügung.

LG

...zur Antwort

Hallo,

Wenn du die Seite als Besucher aufrufst und nicht angemeldet bist, gibt es meistens starke Rabatte auf sämtliche Kurse.

Lass dich nicht von irgendwelchen Nachrichten oder der verbleibenden Zeit unter Druck setzen, es gibt wirklich gefühlt jede Woche solche Rabatte - auch für bereits registrierte Nutzer.

LG

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.