Programmieren – die besten Beiträge

JavaScript EventListener funktioniert nicht richtig?

Mein JS-Code:

'use strict'

let lines = document.getElementsByClassName("src-line");
let activeLine = -1;

for (let i1 = 0, i2 = lines.length; i1 < i2; i1++) {
  lines[i1].addEventListener("mouseover", function(){
    lines[i1].style.cursor = "text";
  });
  lines[i1].addEventListener("click", function(){
    activeLine = i1;
    console.log(activeLine);
  });
}
addEventListener("keydown", keypressed(e));

function keypressed(e) {
  if (activeLine != -1) {
    if (e.key == "Backspace") {
      console.log("Backspace");
      ediText[activeLine] = ediText[activeLine].substring(0, ediText[activeLine].length - 1);
    }
    else if (e.key == "Tab") {
      ediText[activeLine] += "&nbsp;&nbsp;&nbsp;&nbsp;";
    }
    else if (e.key == "Shift") {
      return;
    }
    else if (e.key == "Space") {
      ediText[activeLine] += "&nbsp;";
    }
    else {
      ediText[activeLine] += e.key;
    }

    console.log(e.key)
    charCompiler(ediText);
  }

  return 0;
};

Wenn ich nun auf ein Element mit der Klasse src-line klicke, wird in der Konsole immer der Listenindex angezeigt. Ich habe momentan zwei, also zeigt es immer 0 oder 1 an.

Wenn ich jetzt allerdings anfange, Buchstaben einzugeben, wird das zuletzt angeklickte Element verändert. Jedoch kann ich jetzt nicht mehr das Element wechseln, denn klicke ich jetzt auf das andere Element, wird das click-Event nicht mehr aufgerufen. D.h. activeLine wird nicht mehr geändert. Ich habe keinen Plan, warum.

Ist evtl. am Code was falsch, weil ich habe keine Ahnung warum das click-Event nach dem keydown einfach ignoriert wird, obwohl es davor ja noch ging. Btw wird auch in der Konsole beim Klicken danach nichts mehr angezeigt.

Computer, Technik, HTML, Webseite, programmieren, JavaScript, Click, HTML5, Entwicklung, Programmiersprache, Technologie, Webentwicklung, Entwicklungsumgebung

Durschnittszeiten mit arrays in python berechnen?

Ich programmiere aktuell einen 1x1 Trainer um Programmieren zu üben/ lernen. Aktuell wird nach eingeben der Aufgabe, die Aufgabe überprüft und Richtig oder Falsch angezeigt. Darunter die benötigte Zeit für die Aufgabe.
Jetzt will ich aber statt der benötigten Zeit pro Aufgabe die Durchschnittszeit pro Aufgabe angezeigt bekommen (Am besten mit Speichern von Daten in Arrays).

Kann mir da jemand helfen?

Hier der aktuelle Code:

from random import randint

import tkinter as tk

import time

status = False

def buttonLos_clicked(event):

    global status

   

    if status == False:

        status = True

        nextTask()

def nextTask():

    global a, b, produkt, zeitanfang

    textbox.delete(0,tk.END)

    zeitanfang = time.time()

   

    a = randint(1,10)

    b = randint(1,10)

    produkt = a * b

    showTask()

def showTask():

    global a, b

   

    labelTask["text"]="Wie viel ist " + str(a) + " x " + str(b) + "?"

def checkAufgabe(event):

    global produkt, zeitanfang, zeitende

   

    antwort = int(textbox.get())

    if antwort == produkt:

        zeitende = time.time()

        labelAnswer["text"] = "Richtig"

        labelTime["text"] = round(zeitende - zeitanfang, 2)

        nextTask()

   

    else:

        labelAnswer["text"] = "Leider falsch. Probiere es nochmal"

        textbox.delete(0,tk.END)

        showTask()

root = tk.Tk()

root.title("1x1-Trainer")

labelBody1 = tk.Label(root, text="Es werden dir zufällige Aufgaben gestellt.")

buttonLos = tk.Button(root, text="Los")

labelTask = tk.Label(root)

textbox = tk.Entry(root)

labelAnswer = tk.Label(root)

labelTime = tk.Label(root)

labelBody1.pack()

buttonLos.pack()

labelTask.pack()

textbox.pack()

labelAnswer.pack()

labelTime.pack()

buttonLos.bind("<Button-1>", buttonLos_clicked)

textbox.bind("<Return>", checkAufgabe)

root.mainloop()

programmieren, Array, Programmiersprache, Python, time, benutzeroberflaeche, Python 3, Tkinter

Meistgelesene Beiträge zum Thema Programmieren